gpt4 book ai didi

mercurial - 在保存时间戳的同时备份Mercurial存储库

转载 作者:行者123 更新时间:2023-12-04 13:29:55 25 4
gpt4 key购买 nike

有没有办法在保留文件时间戳的情况下备份Mercurial存储库?

现在,我正在使用hg clone将存储库复制到暂存目录,然后备份程序从那里获取文件。我并不是将备份程序直接指向存储库,因为我不希望备份发生时更改程序(通过提交)。

问题是hg clone将所有文件的时间戳更改为当前时间,因此备份程序(我无法更改)认为所有内容都已修改。

最佳答案

我建议使用hg pull而不是hg clone。因此,您将在服务器上保留存储库的镜像,并使用hg pull定期对其进行更新。然后,让备份程序对此进行备份。使用hg pull时,您将传输最新历史记录,并且仅传输.hg/store/data下实际受拉动影响的更改文件。

在这里,我通过制作一个带有两个文件的小型存储库来测试了这一点:a.txtb.txt。然后,我使用hg clone --noupdate将存储库“克隆到服务器”。这样可以确保我们在服务器上没有工作副本-它只需要在.hg中找到的历史记录。

复制后的时间戳如下所示:

%ll --time-style = full .hg/store/data
总计8.0K
-rw-r--r-- 1 mg mg 76 2009-11-25 20:07:52.000000000 +0100 a.txt.i
-rw-r--r-- 1 mg mg 69 2009-11-25 20:07:52.000000000 +0100 b.txt.i

如您所述,它们都是相同的,因为文件都是由克隆操作创建的。然后,我更改了原始存储库(客户端上的存储库)并进行了提交。拉出变更集后,我得到了以下时间戳记:

%ll --time-style = full .hg/store/data
总计8.0K
-rw-r--r-- 1 mg mg 159 2009-11-25 20:08:47.000000000 +0100 a.txt.i
-rw-r--r-- 1 mg mg 69 2009-11-25 20:07:52.000000000 +0100 b.txt.i

注意a.txt.i的时间戳是如何更新的(我只在提交中触摸了a.txt),而b.txt.i的时间戳却被搁置了。

如果您的备份软件很聪明,它甚至会注意到Mercurial仅将数据附加到a.txt.i。这意味着新的a.txt.i文件在一定程度上与旧的a.txt.i文件相同-因此,备份程序应仅复制文件的最后部分。 Rsync是一个备份程序的示例,它会注意到这一点。

关于mercurial - 在保存时间戳的同时备份Mercurial存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1792397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com