Svn Subversion在合并时忽略对单个文件的本地更改

Svn Subversion在合并时忽略对单个文件的本地更改,svn,tortoisesvn,Svn,Tortoisesvn,合并其他分支时是否可以忽略对单个本地文件的更改 我所拥有的是一个批处理文件,它对单个文件进行更改,然后在TortoiseSVN中启动commit对话框。这会导致每次合并时与该文件发生冲突,但在任何情况下,我都希望该文件的服务器版本不会干扰所有其他文件的正常冲突过程 据我所知,我在谷歌搜索或文档中没有发现任何有希望的东西。我可能不是在寻找正确的术语,或者只是在做一些非常不寻常的事情 我正在处理的项目的要求是将当前工作副本的修订号签出并显示在页脚中。我发现最简单的方法是使用一个包含要替换的关键字的文

合并其他分支时是否可以忽略对单个本地文件的更改

我所拥有的是一个批处理文件,它对单个文件进行更改,然后在TortoiseSVN中启动commit对话框。这会导致每次合并时与该文件发生冲突,但在任何情况下,我都希望该文件的服务器版本不会干扰所有其他文件的正常冲突过程

据我所知,我在谷歌搜索或文档中没有发现任何有希望的东西。我可能不是在寻找正确的术语,或者只是在做一些非常不寻常的事情


我正在处理的项目的要求是将当前工作副本的修订号签出并显示在页脚中。我发现最简单的方法是使用一个包含要替换的关键字的文件
version.txt
。我们使用一个批处理文件进行提交,该批处理文件只更新该文件,然后启动TortoiseSVN对话框,这样我们就可以像以前一样使用GUI进行提交。本地工作副本和开发服务器的工作方式如下。生产使用了一个部署脚本,可以稍微清理一下,这样我们就可以导出特定的标记版本。

我不确定您的用例是什么。特定于用户/计算机的文件不应是SVN存储库的一部分。也许您可以尝试参数化批处理文件

关于合并:原则上,应该始终在干净的工作目录中合并

如果确实必须继续当前的工作方式,则可以在合并后使用
svn resolve
(请参阅
svn help resolve
)从命令行修复工作目录:

svn解析--完全接受

我不确定您的用例是什么。特定于用户/计算机的文件不应是SVN存储库的一部分。也许您可以尝试参数化批处理文件

关于合并:原则上,应该始终在干净的工作目录中合并

如果确实必须继续当前的工作方式,则可以在合并后使用
svn resolve
(请参阅
svn help resolve
)从命令行修复工作目录:

svn解析--完全接受
对单个文件进行更改,然后在TortoiseSVN中启动提交对话框的批处理文件

坏主意(tm)有共同点。Bat文件还可以使用SVN的CLI静默提交

我想要那个文件的服务器版本

坏的不干净的术语所有节点(分支)中提交的所有文件都是“服务器版本”。您必须写入“我的”或“另一个”版本的更改文件,合并后必须存储在“另一个”分支的“我的”中才能获得完整答案

现在的简短答案是:

  • 在合并完整树之前,使用带有所需参数的
    --accept
    选项将单个(更改的)文件与另一个分支的文件合并,以获得请求的结果
  • 合并完整分支
对单个文件进行更改,然后在TortoiseSVN中启动提交对话框的批处理文件

坏主意(tm)有共同点。Bat文件还可以使用SVN的CLI静默提交

我想要那个文件的服务器版本

坏的不干净的术语所有节点(分支)中提交的所有文件都是“服务器版本”。您必须写入“我的”或“另一个”版本的更改文件,合并后必须存储在“另一个”分支的“我的”中才能获得完整答案

现在的简短答案是:

  • 在合并完整树之前,使用带有所需参数的
    --accept
    选项将单个(更改的)文件与另一个分支的文件合并,以获得请求的结果
  • 合并完整分支

我们已经确定,您的功能要求是将工作副本的当前版本合并到此处完成的任何构建中(在某些文档的页脚中)

你目前的做法 您有一个文件,
version.txt
,其中包含
$Revision$
关键字,该关键字(如果启用)Subversion将按照手册1(我的重点)中的说明进行替换:

此…描述了…修订版,在该修订版中,此文件更改了…,看起来像$revision:144$

每次提交之前,您都会使用脚本更新
version.txt
(以某种方式或其他方式),以确保此文件的最后版本是工作副本所基于的分支的版本。从
version.txt
导出修订号的过程可能对您为确保最新修订而使用的任意更改不敏感

你的问题 您观察到的缺点是,当您从一个分支合并到另一个分支时,对两个分支中的
version.txt
所做的任意更改意味着
version.txt
总是冲突的。因此,在这样的合并之后,您需要首先解决冲突(您的提交脚本将像往常一样自动应用新的任意更改)

因此,您要求提供一种方法来忽略本地更改,并在要合并的存储库中自动使用
version.txt

建议的颠覆方法 您对
version.txt
的任意更改是您解决本手册第1页“Where's
$GlobalRev$
?”框中所述问题的方法:

新用户经常被…$Rev$…弄糊涂,因为存储库有一个全局的…修订号…,许多人认为…$Rev$…反映了这一点…挫败感通常仍然存在-如果没有…关键字…,您如何…获得全局修订号

…Subversion附带了一个名为SvVersion的工具…用于此目的。它会对工作副本进行爬网,并将找到的修订作为输出生成。您可以使用此…将该修订…嵌入到您的fi中
svn resolve --accept theirs-full <your file>