合并另一个分支时是否可以忽略对单个本地文件的更改?
我所拥有的是一个批处理文件,它对单个文件进行更改,然后在TortoiseSVN中启动提交对话框。这会导致每次合并时与该文件冲突,但在每种情况下,我都希望该文件的服务器版本不会干扰所有其他文件的正常冲突过程。
据我所知,在谷歌搜索或文档中我没有找到任何有希望的东西。我可能不是在寻找正确的术语,或者只是做一些非常罕见的做法。
我正在处理的项目的要求是检查当前工作副本的修订号是否显示在页脚中。我发现这样做的最简单方法是使用包含要替换的关键字的文件version.txt
。我们使用只更新此文件的批处理文件,然后启动TortoiseSVN对话框,以便我们可以像以前一样使用GUI进行提交。本地工作副本和开发服务器的工作方式如下。 Production使用部署脚本来清理一些内容,以便我们可以导出特定的标记版本。
答案 0 :(得分:3)
我们已经确定您的功能要求是将工作副本的当前版本合并到那里完成的任何构建中(在某些文档的页脚中)。
您有一个文件version.txt
,其中包含$Revision$
关键字,如果启用了Subversion,则替换为Keyword Substitution 1 下的手册中所述(我的重点):
这...描述了...... 此文件更改了...的修订版,并且看起来像$ Revision:144 $。
在每次提交之前用脚本更新version.txt
(以某种方式或其他方式),以确保此文件的最后一个修订版是工作副本所基于的分支的最新修订版。从version.txt
派生修订号的过程可能对您用于确保最新修订的任意更改不敏感。
您观察到的缺点是,当您从一个分支合并到另一个分支时,在两个分支中对version.txt
进行的任意更改意味着version.txt
始终存在冲突。在这样的合并之后,您需要首先解决冲突(您的提交脚本将照常自动应用新的任意更改)。
因此,您要求一种方法来忽略您的本地更改,并自动使用您要合并的存储库中的version.txt
。
您对version.txt
的任意更改是您在本手册的the same page 1 的“Where $GlobalRev$
?”下的框中描述的问题:< / p>
新用户经常被... $ Rev $混淆......由于存储库有一个全局...版本号......,很多人都认为......这......反映在... $ Rev $ .... ...经常会感到沮丧 - 没有... ...关键字......,你怎么能......得到全球修订版号??
... Subversion附带了一个名为svnversion的工具......用于此目的。它会抓取您的工作副本并生成它找到的修订的输出。您可以使用此...将该修订版嵌入到您的文件中。有关更多信息......,请参阅svnversion Reference 1 。
svnversion
的输出显示工作副本中的修订范围,以及它是混合,修改和/或稀疏,例如。 4168
或4123:4168MSP
。
svn
resolve
1 --accept theirs-full
{{自动解决冲突1}} 的。
<WC-path>
更方便version.txt
--accept theirs-full
1 svn merge
<Source-URL>/version.txt <WC-path>/version.txt
mine-full
或其他任何内容并不重要,因为您只提取修订号并忽略任意更改(只要该过程仍然有效)。theirs-full
info
1 svn
的输出。我之所以提到这是因为它是我过去使用的方法,但您可能会发现<WC-path>
更合适。svnversion
代码的修订号。version.txt
/ svn info
,那么您可以通过多个平台进行复制。 svnversion
,您可以•在复制前生成ftp
- 输出,•使用svn*
关键字,或•在该平台上省略修订。1 请注意,引用的是本手册的1.8版本,截至2018-12-27,该版本仍然是最新的;如有疑问,请检查http://www.svnbook.com/。
<强>编辑强>
2015-06-16处理非$Revision$
平台
2018-12-27手册的国家版本
答案 1 :(得分:1)
我不确定你的用例是什么。用户/计算机特定的文件不应该是SVN存储库的一部分。也许您可以尝试参数化批处理文件?
关于合并:原则上,应该总是合并到 clean 工作目录中。
如果您真的必须继续当前的工作方式,可以在命令行合并svn resolve
之后修复工作目录(参见svn help resolve
):
svn resolve --accept theirs-full <your file>
答案 2 :(得分:1)
批处理文件,对单个文件进行更改,然后在TortoiseSVN中启动提交对话框
糟糕的想法(tm)的共同点。 Bat文件也可以使用SVN的CLI静默提交
我想要那个文件的服务器版本
糟糕的不洁期限。所有节点(分支)中的所有提交文件都是&#34;服务器版本&#34;。你必须写&#34;我的&#34;或者&#34;另一个&#34;已更改文件的版本必须存储在&#34; my&#34; &#34;另一个&#34;合并后分支以获得完整答案。
简短回答现在将是:
--accept
选项和所需的ARG来获取请求的结果