我正在使用git svn clone
进行从SVN存储库到Git存储库的单向转换。大多数示例都使用--no-metadata
标志进行此操作-使用此标志是否有优势?
我了解该标志会删除SVN修订号。我可以想到保留这些号码可能有用的原因(例如在错误跟踪软件中引用特定提交)。那么,有没有使用--no-metadata
标志的理由呢?是否除了断开所有联系的感觉外,还有其他好处呢?
我正在使用git svn clone
进行从SVN存储库到Git存储库的单向转换。大多数示例都使用--no-metadata
标志进行此操作-使用此标志是否有优势?
我了解该标志会删除SVN修订号。我可以想到保留这些号码可能有用的原因(例如在错误跟踪软件中引用特定提交)。那么,有没有使用--no-metadata
标志的理由呢?是否除了断开所有联系的感觉外,还有其他好处呢?
--no-metadata
的一个论点是它不会改变您的提交消息。因此,即使从不同位置获取,提交消息也将保持不变,因此提交哈希值也将保持不变。
举个例子,如果我使用git svn init
从本地file:
URL初始化一个repo,然后从https:
URL拉取,由于所有带有git-svn-id: file:///
... 的提交都会被作为 git-svn-id: https:///
... 获取并编码为新的SHA1,因此仓库中的所有提交都将被复制一遍。
如果我指定--no-metadata
,那么提交消息和这个sha1将保持不变,并且我可以从本地文件系统或svn服务器获取,因为在git存储库中只会有任何给定svn提交的单个副本。
就我个人而言,我更喜欢有一个最小元数据选项,记录子版本修订号,但不包括完整的元数据,但如果不用git-filter-branch
乱搞,我们只能选择全有或全无。
/project/trunk
与/project
之间的区别。这可能会导致在Git中提交是不同的,即使它们在SVN中是相同的。 - jpmc26实际上不建议使用这个选项:
这个选项并不被推荐,因为它会使得在现有文档、bug报告以及档案中追踪旧的SVN版本号变得困难。如果你计划最终将代码库从SVN迁移到git,并且确定放弃SVN历史记录,请考虑使用git-filter-branch(1)。filter-branch还允许重新格式化元数据以便阅读,并重写非“svn.authorsFile”用户的作者信息。