8

我有一个已经存在的 git-svn 存储库,在我的 .config 文件中有一个忽略路径,如下所示:

ignore-paths = ^(?!(Path1/Proj1|Path1/Proj2|Path2/Proj3))

这很好用。

有人在 svn 中添加了一个新项目,我现在在我的 git repo 中需要它。

如果我将忽略路径更改为下面的内容并发出 fetch 或 rebase,我永远不会看到 Path2/Proj4

 ignore-paths = ^(?!(Path1/Proj1|Path1/Proj2|Path2/Proj3|Path2/Proj4))

过去,我总是放弃并炸毁我的 git repo 并重新创建它。有没有更好的办法?

4

1 回答 1

2

编辑忽略路径后,您需要

git svn reset -r <n> -p # where <n> is the SVN revision where the new path was added.
git svn fetch
git rebase # or reset

参考git-svn(1)

重置

将fetch的效果撤消到指定的修订版。这允许您重新获取SVN 修订版。通常情况下,SVN 版本的内容永远不会改变, 也不需要重置。但是,如果 SVN 权限发生变化,或者您更改了 --ignore-paths 选项,则获取可能会失败,并显示“未在提交中找到”(文件以前不可见)或“校验和不匹配”(错过修改)。如果不能永远忽略问题文件(使用 --ignore-paths),修复 repo 的唯一方法是使用reset

仅更改了 rev_map 和 refs/remotes/git-svn( 有关详细信息,请参阅下面 FILES 部分中的$GIT_DIR/svn/*\*/.rev_map.*)。在reset之后执行fetch,然后git resetgit rebase将本地分支移动到新树上。

于 2016-06-08T22:10:26.000 回答