Mercurial指定未版本控制文件的初始状态

时间:2011-05-24 19:32:11

标签: version-control mercurial

是否可以使用Mercurial指定未版本控制文件的初始状态?

更具体地说,我希望这可以工作:

jonathan@dev-vm ~$ mkdir initial-state
jonathan@dev-vm ~$ cd initial-state/
jonathan@dev-vm ~/initial-state$ hg init
jonathan@dev-vm ~/initial-state$ touch main.cpp
jonathan@dev-vm ~/initial-state$ touch config.cpp
jonathan@dev-vm ~/initial-state$ hg add      
adding config.cpp
adding main.cpp
jonathan@dev-vm ~/initial-state$ echo "config.cpp" > .hgignore
jonathan@dev-vm ~/initial-state$ hg add
adding .hgignore
jonathan@dev-vm ~/initial-state$ hg commit -m "initial commit"
jonathan@dev-vm ~/initial-state$ echo "#define CONFIG true" >> config.cpp

# This is what I would like to see:
jonathan@dev-vm ~/initial-state$ hg status
jonathan@dev-vm ~/initial-state$

# This is what happens:
jonathan@dev-vm ~/initial-state$ hg status
M config.cpp
jonathan@dev-vm ~/initial-state$

1 个答案:

答案 0 :(得分:2)

在将main.cpp添加到main.cpp之前,您要做的是提交.hgignore的初始版本。 main.cpp仍显示在hg status上的原因是,因为当您执行第一次提交时它在.hgignore中列出,所以第一次提交实际上不会将更改提交到main.cpp (初始版本)。

所以,而不是:

% hg init
% touch main.cpp
% hg add main.cpp
% hg ci -m "Initial commit"
% echo "main.cpp" >.hgignore
% hg add .hgignore
% hg ci -m "Update hg ignore"
% echo "wotnot" >main.cpp
% hg status
# you should see nothing

话虽如此,将main.cpp放在.hgignore中并不会阻止将来提交该文件。可以通过执行以下操作来更改和提交文件:hg ci -m "commit main.cpp" main.cpp