2011-06-01 33 views
2

隨着時間的推移,許多開發人員提交的文件被添加到.hgignore中。根據我所聽到的,沒有辦法從mercurial的歷史中移除物品,這是可以的。但我也聽說有一種辦法可以做一個克隆,我認爲使用convert插件克隆/導出一個repo,同時指定哪些文件不包含在轉換中。想要做一個具有hgignore模式過濾器的mercurial克隆

我忍不住想那裏的人有一個腳本,它使用.hgignore文件中的模式進行導出/過濾/轉換。

有沒有人創造過這樣的野獸?

回答

2

您可以創建一個從.hgignore做這樣的事情filemap:

hg clone -U yourrepo temprepo # create a temp repo with no files in working dir 
cd tmprepo 
hg revert --all # put files in working dir 
hg forget ** # un-add the files 
hg status --ignored --no-status | sed 's/^/exclude /' > ../filemap 

,將讓你一個filemap可以傳遞到hg convert,消除所有會被忽略給您.hgignore添加的文件。

儘管理解,運行convert會創建一個與您以前的回購無關的全新回購。所有現有的克隆將無法使用新的克隆。這通常不值得。

+0

好,所以這真的很好,會嘗試一下。我瞭解現有的克隆將無法使用,但我認爲在我們當前的模型中應該可以。我們確實有一個大家都推薦的中央回購,並且構建系統的工作來源於。沒有人有任何長期未提交的提交。所以我們可以稱旗幟日,克隆然後讓每個人都拉。 – 2011-06-02 05:32:17

+0

一個簡單的問題,歷史和分支名稱等發生了什麼,我認爲轉換將保留所有這些東西。會做一些閱讀,看看是否是這樣。 – 2011-06-02 05:33:06

+0

現在要弄清楚如何說2個答案是正確的,這個給了我一件,另一個給了其他的東西:) – 2011-06-02 05:33:32

2

hg convert確實是你想要使用的東西。

您將要創建一個文件映射(只是一個文本文件),它會列出所有你要麼要包括,排除或重命名的東西:

 
include subfolder 
exclude subfolder/supersub 
etc... 

閱讀下面的一個更具體例如:
https://www.mercurial-scm.org/wiki/ConvertExtension#A--filemap

一旦你創建了這個文件,你只需要使用下面的命令:

$ hg convert --filemap my_file_map /path/to/source/repo /path/to/dest/repo

源代碼回購將不會被修改,並且會創建一個代碼回購。我不想只是複製逐字什麼文檔已經是這麼說的這裏是鏈接:

如何保持只是一個子目錄(或善變的回購運行):
https://www.mercurial-scm.org/wiki/ConvertExtension#Converting_from_Mercurial

+0

因此,我得到的部分,但是如何從.hgignore創建文件映射。那是我想我應該要求的部分。必須有某種腳本來爲hgignore文件創建文件映射。時間谷歌:) – 2011-06-01 04:05:48

+0

看起來像是有一些關於能夠添加正則表達式到filemap命令的討論,但我不知道它到了http://groups.google.com/group/mercurial_general/browse_thread/thread/cf53f593a4f771c0 ?pli = 1 – 2011-06-01 04:12:00