2012-05-15 70 views
0

我需要包含一些以前不受版本控制的代碼到已經包含一些提交的git存儲庫中。找到合適的父代提交未加入代碼添加到現有的git存儲庫

我想自動化的是找到一個合適的「父」提交,其中的新代碼將是一個孩子承諾。

經過一番測試,我認爲git diff-tree將最好的工作(因爲只有一個文件夾包含相關的代碼爲「父母」測試)。

我的做法是這樣的:

  1. 循環通過相關子樹的所有現有的提交和提交的節點SHA1和SHA1
  2. 新的文件複製到存儲庫中,將它們添加到索引
  3. 注SHA1的相關子樹
  4. 比較現有的相關子樹與新候選者,並使用類似的東西的git diff-tree計算「相似度」
  5. 選擇最多類似的現有子樹,並使其成爲新提交的父代,即檢出新的父代(或checkout --orphan,如果找不到合適的父代),則清空工作目錄並填寫新文件並提交。

缺少的是一種計算相似度的方法!也許有人可以給我一個提示標誌的組合將有所幫助...

代碼看起來幾乎像PASCAL如果這很重要。

回答

1

不會git diff --numstat適合你在這裏。您可以指定diff在特定文件或路徑之間,並且輸出是「機器友好」的。

+0

我目前正在使用類似於你的建議:'git diff-tree -r -M80%-C80%--numstat'並提取添加/刪除的行數。雖然它在某種程度上起作用,但我認爲可能有更復雜的選擇。 – Onur

相關問題