使用hg,如何在一次更改中替换目录的内容?hg:在一次更改中替换目录内容
更具体地说,我有一个大型C++库的头文件存入我的仓库,我想将它们更新(包括添加和删除文件)到最新版本的库中。我希望在一次更改中做到这一点,而不是首先删除旧版本,然后再添加新版本,这会破坏测试并产生无益的差异。
使用hg,如何在一次更改中替换目录的内容?hg:在一次更改中替换目录内容
更具体地说,我有一个大型C++库的头文件存入我的仓库,我想将它们更新(包括添加和删除文件)到最新版本的库中。我希望在一次更改中做到这一点,而不是首先删除旧版本,然后再添加新版本,这会破坏测试并产生无益的差异。
如果他们都改变,那么,(假设平坦的目录结构:
hg remove \path\to\directory\to\replace\*.h
copy \path\to\new\files\*.* \path\to\directory\to\replace\
hg add \path\to\directory\to\replace\*.*
hg commit -m "Library SoAndSo headers replaced"
hg push
第一行说忘就下的所有文件提交,但随后新的在同一添加提交 - 请记住只有最后一行实际上更改了存储库的本地副本,并且它只在最后一行变成公共状态
如果您确实有子目录,那么您可以在第一行删除*.h
, xcopy
或资源管理器复制新的di本地结构,并在第三行删除*.*
。
# Change to parent directory of your vendor directory
cd vendor_dir/..
rm -rf vendor_dir
# unpack/copy/checkout new vendor sources into a new vendor_dir
# Tell mercurial to figure out what changed
# Feel free to play with the similarity percentage and the (-n) do nothing switch
hg addremove --similarity 70 vendor_dir
hg commit vendor_dir
更新时间:
hg rm *
内vendor_dir
缺失的父目录的工作点文件,如果有的话。hg rm
更改为rm -rf
,因为我错误地认为rm后的addremove会做正确的事情。提示:它没有。
你的意思是:hg add \ path \ to \ directory \ to \ replace \? – Taylor 2014-09-02 20:45:53
@泰勒哎呀!是的 - 将修复。 – 2014-09-02 21:01:33
好的,头文件dir有子目录。这是如何改变的? – Taylor 2014-09-02 21:03:26