我有一个Subversion工作副本,我对一个文件进行了一些本地修改.修改只与我有关,我不想提交它们.(存储库中的版本包含一些适合其他用户的默认值,但不适合我,这就是我想在本地覆盖它们的原因.)
请注意,虽然我不想提交更改,但我确实希望在我这样做时收到存储库中所做的任何更新svn update.此外,只有在我的工作副本中,我不想将更改提交到该文件,其他用户不应受到影响.所以svn:ignore或者提交钩子不符合我的目的.
目前,我只是这样做:
svn commit file1 file2...
Run Code Online (Sandbox Code Playgroud)
我明确指定了包含我不想提交的特定文件的更改的文件.
然而,在我工作的时候,我养成了简单写作的习惯:
svn commit -m "Log of what I just did"
Run Code Online (Sandbox Code Playgroud)
而且我担心在我不专心的时候,我会无意中使用上面的命令提交"禁止"文件.
简而言之,我正在寻找的只是一种在工作副本中"标记"文件的方法,该方法可以防止Subversion提交该文件中的更改(即使我刚刚得到一个,也不必自动排除当我尝试提交所有文件时出错,很好).有点像标记处于"冲突"状态的文件......
这样的事情存在吗?
更新:akent,谢谢你指出这个非常相似的问题.
Bru*_*ine 17
有几个答案可以工作:
CoverosGene建议默认命令,例如svn commit操作默认的更改列表,这样你可以在将文件分配给另一个更改列表时排除文件,但我在文档中找不到任何引用,而在我的测试中这并不是工作.
由于SVN命令行客户端没有很好的解决方案,我在这里打开了一个增强请求.该请求表明命令行客户端也可以遵守"ignore-on-commit"更改列表.
更新:这是现在的问题2858,并且有一个功能概要来处理它与svn:hold属性.
我理解你遇到的问题; 可能这个"禁止"文件包含仅与您的本地构建环境相关的配置设置等.我没有找到任何方法直接告诉SVN忽略版本化文件中的更改,但这是我过去使用过的解决方法.
假设您的文件被调用,比如说"build.conf".将SVN版本化文件命名为build.conf.example.然后,在Makefile或构建脚本或其他任何内容中,您可以自动将build.conf.example复制到真正的 build.conf,它仍然是无版本的.然后你svn忽略build.conf,然后每个开发人员都可以对它进行任何本地更改.
但"必须有更好的方法"......
编辑:这里几乎完全相同的问题:SVN:有没有办法将文件标记为"不提交"?
在其中创建包含该文件的更改列表,然后不要关注更改列表.该文件将等待提交,但是您的常规提交(在默认的更改列表中工作)将永远不会被提取.
svn changelist mylocal file1
Run Code Online (Sandbox Code Playgroud)
将创建一个名为的变更列表mylocal并将文件分配file1给它.
小智 5
实际上,预提交脚本可以完成这项工作.
编写一个执行'svnlook diff'的预提交脚本,如果在更改集中设置了名为'nocommit'的属性,则拒绝提交.
然后,在您的工作副本中,您可以在任何不应提交的文件上设置'nocommit'属性.如果任何文件具有'nocommit'属性,则任何后续提交都将失败.如果您以后确实需要检查文件的更改,您所要做的就是从工作副本中删除'nocommit'属性.