2014-09-24 87 views
0

我繼承了一個沒有使用任何SCM開發的項目。相反,我有一系列看起來像文件夾:將文件夾備份轉換爲Git倉庫

my-project.201109011234 
my-project.201110010908 
my-project.201202040454 
my-project.201203011123 
...and so on... 

每個文件夾是源代碼的完整副本,並且文件夾被做了複製時的時間戳命名。每個副本之間都有各種更改,即添加,刪除,重命名文件和文件夾以及更改文件內容。

是否有任何形式的工具,我可以爲它提供一個文件夾列表,它基本上會爲我創建一個Git倉庫,其中每個文件夾變成一個提交?之後,我希望Git知道每次提交之間會發生什麼變化?

謝謝亞當。

+0

我會用一個shell腳本。你在做什麼系統? – jurgemaister 2014-09-24 10:03:24

回答

2

這聽起來像是一個非常特殊的問題來解決(即可能沒有一種經過驗證的方法來將這樣的東西整合到git中)。

也就是說,一個解決方案可以很容易地設計一些shell/python/xyz腳本。步驟將是這些:

  • 使空混帳回購協議
  • 使歸檔的列表,按時間順序
  • 分類每個存檔:
    • 刪除項目目錄的內容(除一切git的目錄)
    • 將文件解壓縮到項目目錄中
    • 運行「git add -u」。在目錄中
    • 運行「git add -f。」在該目錄根據存檔名稱
    • 提取/生成提交信息
    • 提交項目的當前狀態DIR

這種解決方案有很大的侷限性(如不執行每個提交的存檔日期)但取決於對你來說重要的事情,你可以調整腳本。

+1

要設置每個提交的日期,只需導出'GIT_AUTHOR_DATE'和'GIT_COMMITTER_DATE'環境變量:請參閱https://www.kernel.org/pub/software/scm/git/docs/git-commit-tree.html(但也請參閱http:// git-scm。com/book/en/Git-and-Other-Systems-Migrating-to-Git) – torek 2014-09-24 10:15:30

+0

這會處理版本A中的文件,但在版本B中刪除了嗎?即將顯示它們在歷史中被刪除? – adamretter 2014-10-02 12:22:03

+0

@adamretter,是的。這就是「git add -u」所做的:它用已刪除的文件更新索引。 – utnapistim 2014-10-02 12:24:32

1

除了utnapistim已回覆的內容,您可以根據您的存檔日期更改提交和作者日期。

有兩種選擇:
1.下列選項將更改日期的所有進一步提交

GIT_AUTHOR_DATE='[Date]' GIT_COMMITTER_DATE='[Date]' git commit -m "[Message]" 
  • 對於單次的提交,你可以做以下:

    git commit --date "[Whatever date you want]"

  • 相關問題