开发人员修复了从trunk创建的分支中的错误.然后我测试分支并重新整合回主干.
最近我也在改变房产.有三个文件我一遍又一遍地提交回主干.我使用svn比较了修订版之间文件的内容,它们是相同的.只有一些财产改变了.
Q1:有什么办法让我只从命令行提交M第一列中只有我这样做的文件svn st?
Q2:我们有什么方法可以清理主干或如何摆脱一遍又一遍地提交这三个文件?
----编辑svn st给我
M .
M controllers/database/udfs/searchForNameContSrch.sql
M controllers/eduMoodleInterface
M controllers/main
M controllers/teaching
M lib/utils/EduMail.php
M lib/views/learning/progress/reverse_template_converter.php
M pages/carer/carer_basepage.php
M pages/common/contact_list_detail_basepage.php
M pages/contact/contact_basepage.php
M pages/staff/staff_basepage.php
M pages/student/student_basepage.php
Run Code Online (Sandbox Code Playgroud)
当前的解决方案是在提交之前恢复第二列中包含M的文件.它工作但很耗时.还有其他想法吗?
我更倾向于弄清楚属性发生了什么并解决了这个问题,而不是试图忽略它们.也就是说,在这个答案的最后,有一个单行程序,如果你在linux上,它将加速你的恢复过程.
为了这个答案,我在一个文件(window.c)上设置了一个属性,并修改了另一个文件(window.h).
svn status
M window.c
M window.h
Run Code Online (Sandbox Code Playgroud)
svn用于属性的主要命令是:
svn propset answer 42 window.c
property 'answer' set on 'window.c'
Run Code Online (Sandbox Code Playgroud)
将文件window.c上的'回答'设置为值42.你可能不想使用它.
svn proplist window.c
Properties on 'window.c':
svn:keywords
svn:eol-style
answer
Run Code Online (Sandbox Code Playgroud)
列出文件中的所有属性(没有值).
svn propget answer window.c
42
Run Code Online (Sandbox Code Playgroud)
获取特定属性的值.
svn propedit answer window.c
Set new value for property 'answer' on 'window.c'
Run Code Online (Sandbox Code Playgroud)
打开一个编辑器(在我的机器上它是所有东西的纳米)并允许你编辑属性,然后在给定的文件上设置它.
svn propdel answer window.c
property 'answer' deleted from 'window.c'.
Run Code Online (Sandbox Code Playgroud)
删除指定的属性(这可能无法解决您的问题,我猜).
您还svn diff可以查找哪个属性不同:
svn diff window.c
Index: window.c
===================================================================
--- window.c (revision 35712)
+++ window.c (working copy)
Property changes on: window.c
___________________________________________________________________
Added: answer
## -0,0 +1 ##
+42
\ No newline at end of property
Run Code Online (Sandbox Code Playgroud)
这基本上说这里唯一的变化是添加了属性'回答',值为42(并且没有换行符).
那么我要做什么
从开始svn diff并找出改变了什么:
svn diff controllers/database/udfs/searchForNameContSrch.sql
svn diff controllers/main
Run Code Online (Sandbox Code Playgroud)
有一个谷歌正在改变的属性,看看你是否可以找出设置它的工具并将其关闭.
您可以尝试使用svn propdelete放弃属性,但我认为这不会有所帮助.
失败 - 快速恢复脚本
否则,如果你正在使用linux,这个内核将恢复具有属性修改但不修改内容的文件.
请第一次在非关键更新上进行测试,是吗?!?!?
svn status | grep "^ M" | sed "s/^.\{8\}//" | while read rv; do svn revert $rv; done
Run Code Online (Sandbox Code Playgroud)
那是:
svn状态
通过grep管道它并过滤仅以'M'开头的行(因此它将忽略'MM' - 重要).
通过sed管道并删除前8个字符(这是文件名前的所有状态列).
管道进入循环并恢复给定的文件名.
这是在行动:
svn status
M window.c
M window.h
svn status | grep "^ M" | sed "s/^.\{8\}//" | while read rv; do svn revert $rv; done
Reverted 'window.c'
svn status
M window.h
Run Code Online (Sandbox Code Playgroud)