2016-01-09 27 views
2

我很難找出一個好的標題,所以如果你有一個想法如何以更清晰的方式表達我的問題,請編輯。已經存在的SVN項目的常見git回購

我正在使用SVN的大項目。由於我習慣於使用git(經常提交,與許多分支機構合作),也不想更改我的工作流,因此我在SVN工作副本的父目錄中設置了一個git存儲庫,以進行本地版本控制。所有SVN相關文件已包含在.gitignore中。使用git-svn對我來說不是一個真正的選擇,因爲我不想用我所有的小提交「污染」SVN回購。

現在我已經開始在同一個項目上與另一個人(叫他B人)的工作密切相關的工作。然而,他並沒有準備好將自己的工作推到SVN倉庫中,所以最初他手動給了我他更改過的文件,並將它們包含在我的分支topic的項目中。由於這個過程非常費力,我們決定使用git來交換項目的進度。

因爲我不想與人B的SVN一塌糊塗,我的想法是以下幾點:

  • 我創建了一個裸露的回購從我的混帳回購協議,並把它這是由人訪問的服務器上乙
  • 某乙運行git init,複製了我的.gitignore文件,運行git add .,使他最初提交
  • 某乙重命名自己的分支topic,增加了裸回購我遠程origin創建和獲取所有數據

由於我已經將他的工作包含在我的回購庫中,因此人員B的topicorigin/topic現在應該沒有任何區別。但他們這樣做。我曾經遇到過

兩個問題(有可能更多):

  • 某些文件已被添加到,即使他們是.gitignore名單上(這是工作的完全相同的文件某乙的混帳回購協議對我罰款)
  • 當運行git diff topic origin/topic它顯示一個文件刪除兩個話題和來源/主題,這肯定存在(以產地/話題道:/dev/null

沒有任何人有一個id ea這裏發生了什麼問題?也歡迎提供替代方案的建議,但請注意,B人員在整個項目中將他的更改推向SVN回購和/或完全放棄SVN是沒有選擇的。

+1

當你說你不想用小提交污染SVN回購時,我很困惑。你的提交直到你推動纔會觸發SVN,所以你可以在推送前清理你的歷史記錄,一切都會好的。我在與Mercurial合作時正在做類似的事情。 – Ben

+1

我不想使用git-svn的另一個原因是我想100%肯定不要搞亂任何東西。此外,我想保持我的提交歷史是這樣,但僅限於我自己。但是,感謝您的反饋! – LLang

回答

1

注:OP LLang結束in the comments

事實證明,簡單地複製.git文件夾(從回購我collegue從裸回購我把服務器上克隆),到他保持的地方了工作副本做了伎倆。


原來的答覆:

使用git-svn是不是真的一個選項,因爲我不想「污染」 SVN回購與我所有的小提交之間。

你仍然可以使用git-svn,在獨立分支機構工作,並且merge squashing你的提交到與svn同步的分支。

某些文件已被添加到人B的混帳回購協議,即使他們是在.gitignore名單上(這是爲我工作得很好完全相同的文件)

的差異(不同的操作系統,不同的git版本,不同的shell,不同的路徑)。
嘗試並重做您的工作站上的相同操作,看看它是否仍然按預期工作。

當運行git diff topic origin/topic它示出了一個文件作爲刪除在兩個topicorigin/topic這肯定的情況下(在origin/topic路徑:/dev/null

/dev/null should means new file or deleted file
不知道文件被刪除的原因,至少要複製它並將其添加到B的一面。

+0

感謝您的建議。在幾個星期的更重要的事情之後,我有時間回到這裏,事實證明,只需將.git文件夾(從我從服務器上放置的裸回購庫中克隆的同事的回購)複製到他保持他的工作副本的伎倆。不過,我仍然不知道爲什麼最初的想法不起作用。 – LLang

+0

@LLang太棒了!我已將您的評論納入答案中,以獲得更多的知名度。 – VonC