最好的情况是对这些人施加适当的压力以获取 Mercurial,但除此之外,补丁可能比压缩文件集更好,因为补丁将跟踪删除和重命名。如果您仍然想要一个 zip 文件,我已经编写了一个制作 zip 文件的简短脚本:
import os, subprocess, sys
from zipfile import ZipFile, ZIP_DEFLATED
def main(revfrom, revto, destination, *args):
root, err = getoutput("hg root")
if "no Merurial repository" in err:
print "This script must be run from within an Hg repository"
return
root = root.strip()
filelist, _ = getoutput("hg status --rev %s:%s" % (revfrom, revto))
paths = []
for line in filelist.split('\n'):
try:
(status, path) = line.split(' ', 1)
except ValueError:
continue
if status != 'D':
paths.append(path)
if len(paths) < 1:
print "No changed files could be found."
return
z = ZipFile(destination, "w", ZIP_DEFLATED)
os.chdir(root)
for path in paths:
z.write(path)
z.close()
print "Done."
def getoutput(cmd):
p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return p.communicate()
if __name__ == '__main__':
main(*sys.argv[1:])
用法是 nameofscript.py fromrevision torevision destination。例如,nameofscript.py 45 51 c:\updates.zip
很抱歉命令行界面不佳,但是脚本只花了 25 分钟编写。
注意:这应该从存储库中的工作目录运行。