2009-05-19 36 views
38

有沒有什麼辦法可以忽略對mercurial提交的某些文件的更改?mercurial中是否存在ignore-on-commit選項?

我有一個特定的情況,我們有一個默認的oracle tnsnames.ora文件指向127.0.0.1,但一些開發人員會修改它指向其他系統,但我們不想更改默認值文件。

在顛覆,我簡單的將此添加到忽略-ON-commit的更改。有沒有辦法在mercurial中做到這一點?

回答

48

如果你想從「汞承諾」命令忽略文件已經「跟蹤」,你應該使用-X選項。傳遞給-X的模式是非常靈活,使其能夠例如運行:

% hg stat 
A etc/foo.conf 
M src/bar.c 
M lib/libbar/loader.c 
% hg commit -X '**.conf' 

避免不管它有多深源代碼樹住提交的任何文件以「.conf文件」擴展名。在上面顯示的工作空間中,這將提交「src/bar.c」和「lib/libbar/loader.c」,但不包含「etc/foo.conf」。

要排除的文件名的多種模式,使用多個-X選項,即:

% hg commit -X '**.conf' -X '**.sh' 
-2

在Mercurial的文檔中查找.hgignore文件。

這是一個忽略文件示例。

 # use glob syntax. 
     syntax: glob 

     *.elc 
     *.pyc 
     *~ 

     # switch to regexp syntax. 
     syntax: regexp 
     ^\.pc/ 
+0

tnsnames.ora文件中已被選中。我想,因爲他們僅僅是爲了我的機器忽略我的本地更改。這就是爲什麼.hgignore不起作用 – 2009-05-19 20:17:36

1

你可以別名承諾類似「汞承諾-X excluded_file.ext」我從來沒有使用水銀,所以我只是被男人頁面會在這裏。

21

傳統上,這解決了沒有版本的文件本身,而是通過版本控制它的一個副本供他人使用的模板。

所以,你會hg mv tnsnames.ora tnsnames.ora-template,然後提交,然後做的tnsnames.ora模板的直文件系統副本的tnsnames.ora,和tnsnames.ora添加到.hgignore文件。

到模板後續更改仍將被推出來,但他們實際上並不會改變,除非有人複製工作環境模板到實際的文件。

+1

因此,如果你有app.config,並將其重命名爲app.config-template,那麼版本庫中將不再有app.config。 這會導致自動構建出現問題。我認爲構建過程需要被告知這個「模板」並重新命名。這不是很好。 – AndyM 2011-06-29 00:00:05

+2

你不想重命名,你想複製和修改。你可以使用自動構建腳本來完成,也可以通過掛鉤來完成,但是無論哪種方式,如果你的文件將與克隆不同,以克隆,那麼必須在某處應用某種智能。 – Zed 2011-07-07 23:32:25

相關問題