2012-04-17 117 views
9

我繼承了存儲在CVS中的項目。之前的開發人員在他的工作目錄中有大量未執行的更改,包括刪除大量文件,我希望檢查它們。這是我的計劃:我可以將.git複製到另一個目錄嗎?

  1. cvs checkout the_project。
  2. 按照the remote cvs/local git workflow,初始化與the_project的原始狀態的混帳回購協議。
  3. 將新的.git複製到其他工作目錄中。
  4. Presto!所有的刪除/更改顯示爲未分離的差異。

這最初看起來像它要去工作。我應該擔心的任何重大缺陷?

+1

我相信這是與從Git的刪除所有文件工作副本,並從CVS倉庫粘貼文件。這應該工作並向您展示所有已經做出的更改。 – Tadeck 2012-04-17 23:37:47

回答

4

我做同樣的事情所有的時間。我使用GIT從一個大型SVN項目中跟蹤多個版本和多個分支。該項目在'src'的子目錄中有200個SVN模塊。當我啓動GIT倉庫時,我檢查了項目的v9.4.4,做了一個'git init'添加了.gitignore和.gitattributes,做了'git add -A'和'git commit -m'v9.4.4'。然後我移動 git的了了項目,並創建了一個符號鏈接它。當v9.4.5發佈時,我檢查了它,添加了一個到現在共享的.git目錄的符號鏈接,添加了.gitignore和.gitattributes,做了'git add -A'和'git commit -m'v9。 4.5' 。在這一點上,我有一個GIT倉庫象徵性地從兩個目錄鏈接。

使用此設置,您可以執行任何不接觸工作目錄的git操作。因此,對於我的應用程序,'git diff v9.4.4..v9.4.5'效果很好。當然,你也可以做git的操作是做觸摸索引和工作目錄但你必須要小心的是該存儲庫是在正確提交您所坐的釋放。

我也用這適用於多個分支。在這種情況下,使用'git symbolic-ref HEAD refs/heads/a-branch'來更改分支而不使用來觸摸工作目錄非常重要。所以當我的項目版本s3出現時,我做了一個'git branch s3 v9.4.4',創建了我的.git符號鏈接,做了'git symbolic-ref HEAD refs/heads/s3',然後用'add'和'承諾。'

+0

感謝您描述您的具體體驗。 – chreekat 2012-04-18 13:43:45

0

是的,這將工作。您當然也可以做相反的事情 - 刪除除.git之外的所有內容並從其他位置粘貼文件。

相關問題