2011-11-30 276 views
18

我正在使用git svn clone进行从SVN存储库到Git存储库的单向转换。大多数例子都是通过--no-metadata这个标志来实现的 - 使用这个标志有什么好处吗?在git svn clone中使用--no-metadata是否有优势?

我知道该标志删除了SVN修订号。我可以想到为什么保持这些原因可能有用的原因(例如回头提到bug跟踪软件中提到的特定提交)。

什么是对于使用--no-metadata标志?除了打破一切联系之外,还有什么好处吗?

回答

12

它实际上是不建议:

此选项不推荐,因为它使得它难以追查 到SVN版本号旧引用现有的文档中,错误 报告和档案。如果您计划最终从SVN迁移到 git,并确定要删除SVN历史记录,请考虑使用 git-filter-branch(1)。筛选器分支还允许重新格式化元数据 以便读取和重写作者信息 非“svn.authorsFile”用户。

+13

这根本不回答问题。我们知道这不是推荐,但它在那里;它有什么意义,它有什么好处呢?对于想要使用此选项,可能有什么理由? – thecoshman

+0

@thecoshman +1没有任何理由 – pinkvoid

11

使用--no-metadata的一个参数是它不会更改提交消息。所以,即使你从不同的位置获取,提交消息也是相同的,因此提交哈希将是相同的。

举个例子,如果我git svn init从本地file: URL回购,后来从https: URL拉,在回购每次提交将被复制,因为所有的git-svn-id: file:///提交的...将被检取为git-svn-id: https:/// ...并用新的SHA1编码。

如果我指定--no-metadata那么提交消息和这个sha1将是相同的,我可以从本地文件系统或Subversion服务器中获取,因为只有git repo中的任何给定svn提交的单个副本。

个人而言,我宁愿它如果有一个最小的元数据选项,它记录了颠覆修订ID,但不是全部元数据,但没有与git-filter-branch乱搞,我们坚持全有或全无。

+1

这个元数据可能导致的另一个问题是,当git认为它应该创建来自不同根的提交时, '/ project/trunk'而不是'/ project'。这可能会导致git中的提交不同,即使它们在SVN中是相同的。 – jpmc26

相关问题