2013-05-08 49 views
2

我们有一个大型的svn仓库,我们在本地使用git和git-svn进行交互。获取文件以添加以前忽略的路径

最近我创建了一个存储库,但忽略了一个以trunk开头的文件。我修复了忽略路径,因此它忽略了目录树干而不是任何以trunk开头的文件。

现在我得到的git svn“没有找到提交”错误,因为提交git同步有文件,但git缺少原始文件提交。

通常会使用git svn reset -rxxxx和git fetch -rxxxx,但是这是一个两年前的版本库,我不能回滚到最初创建文件时。

如何让git从svn中取出文件?

回答

1

理念1:

创建一个SVN工作拷贝。然后:

然后,只需编辑.git/config修改ignore-paths然后git svn rebase

理念2:

只是手动复制所有文件从svn的git的回购协议,承诺他们和沟SVN。

理念3:

不要担心,并重置两岁的混帐回购协议。

+0

它是一个拥有20-30个活跃开发者的巨大svn,所以我们不打算用想法2和3:P – Kenoyer130 2013-05-09 20:22:54

+0

我认为你的SVN版本是反转的。不应该合并为svn merge -r PREV:COMMITTED .'?我的成功合并是通过'svn merge -r 32098:32097完成的.' – 2016-02-11 21:29:24

+0

@big_gie Are you sure?这个答案与我的一样:http://stackoverflow.com/questions/4527189/how-to-undo-a-commit-in-svn – kan 2016-02-11 22:46:35

0

一个解决办法是:

  • 更新到最新版本git svn rebase
  • 复制文件手动
  • 加入他们,并使用git commit
  • 提交他们承诺(从.git/info/exclude如果有删除)使用git svn dcommit

Th在应导致像一个错误:

ERROR from SVN: RA layer file already exists: File X already exists W: 9166d48381296ed6038baf09425a6e6d84638c8c and refs/remotes/git-svn differ, using rebase: :040000 000000 2ffb637dfc63727c4108c41c705a45e673e5dcbc 0000000000000000000000000000000000000000 D folder Current branch master is up to date. ERROR: Not all changes have been committed into SVN, however the committed ones (if any) seem to be successfully integrated into the working tree. Please see the above messages for details.

git commit提交会存在,但git svn dcommit不会在上游svn库(即什么都不会发生,fugazi,仙尘,它不存在)。