似乎在使用svn copy创建标记时,所有文件都会获得当前时间戳。我想要一个完全重复,包括原始文件的时间戳。这可能吗?
答案 0 :(得分:1)
您需要启用use-commit-times
配置。这是SVN Book
使用提交倍
通常,您的工作副本文件的时间戳会反映上次任何进程触及的时间戳,无论是您自己的编辑器还是某个svn子命令。这对于开发软件的人来说通常很方便,因为构建系统通常会将时间戳视为决定需要重新编译哪些文件的一种方式。
但是,在其他情况下,工作副本文件的时间戳有时会很好地反映上次在存储库中更改它们的时间戳。 svn export命令始终将这些“last-commit timestamps”放在它生成的树上。通过将此配置变量设置为yes,svn checkout,svn update,svn switch和svn revert命令还将为它们触摸的文件设置last-commit时间戳。
答案 1 :(得分:0)
你是如何创建标签的?您是否在某个工作目录上使用了svn cp
,或者您是否使用了svn copy
命令的URL形式?要创建标记和分支,您应该使用URL表单:
$ svn cp --parents -r$rev \
-m"Creating tag 4.10 for project from Revision $rev" \
http://repo/svn/trunk/proj@$rev http://repo/svn/tags/4.10/proj
注意我使用-m
来设置提交消息,因为副本在服务器上完成并立即提交。如果我没有包含此内容,并且设置了SVN_EDITOR
或EDITOR
,系统会要求您提交提交消息。
注意我也使用--parent
并使用-r
和修订固定(最后为@$rev
)。这确保我标记了我想要的修订版。 --parents
将自动创建任何父目录(如果它们丢失)。拥有它永远不会伤害。
不涉及工作目录。一切都直接在服务器上完成。不会复制任何物理文件。
如果这样做,标记中文件的时间戳与它们在主干或分支上的相同。这将是他们最后一次提交的时间戳。如果对本地文件执行svn cp
,则复制的文件将具有复制时的时间戳。更不用说它需要更长的时间。