2013-05-08 52 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,仙塵,它不存在)。