我希望 subversion 提交一个文件,即使它没有改变。有没有办法做到这一点?
12 回答
如果您希望文件内容保持不变(这意味着您不能像 johnstok 建议的那样仅更改空格),您始终可以更改文件的属性之一。
例如。
svn propset dummyproperty 1 yourfile svn 提交你的文件
这将执行提交而无需更改文件。
只要确保您不使用其中一种特殊svn:
属性即可。其他的应该没问题。
编辑:其他一些发帖人问为什么有人要这样做——大概标记这个答案的人也有同样的担忧。
我不能代表原始海报,但我看到这种使用的一种情况是尝试自动同步 Visual Sourcesafe 存储库上的活动与颠覆存储库。
至于回答为什么要强制提交。我见过有人使用错误或不清楚的提交消息的情况。如果您可以执行强制提交,那就太好了,您可以在其中纠正这个错误。这样更新的提交消息就会进入存储库,所以它不会丢失。
我通过删除然后重新添加有问题的文件来解决这个问题。这不是最好的方法,它可能打破了修订历史,但它适合我的目的。
想要这样做的原因:文件是从相同源构建的两个可执行文件之一(具有不同的#defines 集)。对来源的微小更改意味着一个已经改变,一个没有。我想在修订历史中记录我实际上已将其更新到最新版本(即使没有更改)。
也许 Morten Holdflod Møller 的观点“该文件仍将是新修订的一部分”将涵盖这一指示,但我认为未更改文件的日志没有显示对该修订的评论。
如果它是一个文本文件,只需添加一些空格,例如换行符。
回答一些人的疑问应该是可能的:由于某种原因,svn 无法识别 doc 文件之间的差异,所以我也想强制提交!
我现在正在将文档从静态目录移动到 svn。文件就像 UG_v1.2、UG_v1.3 等。所以为了保留历史记录,我采用 1.2,从文件名中删除版本并将其添加并提交到 svn。然后我从第二个版本中取出版本,将它复制到第一个版本上,并希望提交它和更新的版本。文件大小和创建日期更改(没有提及文档中的内容),但 svn 声称它是完全相同的文件并且不允许我提交。当我手动更改文档时,svn 会看到不同。见鬼?:>
我不认为这是可能的,但首先你为什么需要这样做?如果文件未更改,则不应提交。
如果您真的希望该文件与提交中的其他文件分组,您可以更改内部的一些小内容(例如添加一个空格)。
有人想要提交未更改的文件的原因是对如何恢复到文件的先前版本的误解。
例如,可以通过仅将其更新为过去的修订版来还原index.html
修订版680中的文件,例如650:
svn update index.html -r 650
但这并不能解决问题,因为:
svn状态-u index.html * 650 索引.html 反对修订状态:680
svn 明确表示 index.html 是远程修改的,你不能提交它,即它“认为” index.html 是旧的,应该更新到更新的版本。所以接下来svn update
会将 index.html 带回修订版680。
要真正还原文件,您应该以相反的顺序合并它:
svn merge -r 680:650 index.html
然后提交svn ci -m "Reverted to r650" index.html
古老的问题,但这是有人想要这样做的原因之一:
我们使用 svn "commit" 来记录代码审查的成功结果。在代码审查期间,会检查(并可能修改)文件的某个子集。但被发现通过审查的文件将保持不变。
这个想法是使用提交来记录审查了哪些文件。这应该包括那些被发现通过审查而没有任何修改的人。因此,需要“重新提交”(“force-commit”)它们而不加修改。
实际上,我遇到了强制提交的理由。这可能不是最佳实践,但我们将 Truecrypt ( http://www.truecrypt.org/ ) 卷放在 SVN 中,因为我们需要对某些 shell 脚本保持严格的安全性,因为它包含敏感信息。创建 Truecrypt 卷后,无论您如何处理,它的二进制数据都保持不变。所以实际上,我可以更改卷的内容,但卷似乎永远不会改变。
更改属性不会强制提交。
TortoiseSVN 1.4.5,内部版本 10425 - 32 位,2007/08/26 11:14:13
我对 trueCrypt 卷也有同样的问题。
我添加了一个新属性(如上所述)“forceCommit1”,我能够提交卷文件。但只有属性被提交,而不是文件的内容。
我删除了文件并再次将其添加到 svn
我以为你可以从命令行做到这一点?
svn ci -force <filename>
我这里没有存储库来检查它,所以我可能错了。