如何从SVN中删除现有变更列表
我通过执行以下操作创建了一个变更列表如何从SVN中删除现有变更列表,svn,changelist,Svn,Changelist,我通过执行以下操作创建了一个变更列表 $ svn changelist my_changes 。。。向其中添加文件,然后提交更改列表 $ svn ci --changelist my_changes --keep-changelists 。。。所以现在,我“保留”了我的变更列表,每次我查看状态时它都会显示出来 $ svn status ... modified/added/deleted files listed here... --- Changelist 'my_changes': .
$ svn changelist my_changes
。。。向其中添加文件,然后提交更改列表
$ svn ci --changelist my_changes --keep-changelists
。。。所以现在,我“保留”了我的变更列表,每次我查看状态时它都会显示出来
$ svn status
... modified/added/deleted files listed here...
--- Changelist 'my_changes':
... files that are a part of this changelist listed here...
我“保留”变更列表是有原因的,但我不再需要它,所以我准备删除它。如何从SVN中删除此变更列表?我知道如何从变更列表中删除文件,但不知道如何从变更列表中删除文件。从变更列表中删除所有相关文件,它就会消失 官方途径 看 手动方式 i、 e.
svn变更列表--删除文件名
D:\Programming>mkdir test
D:\Programming>cd test
D:\Programming\test>svnadmin create .
D:\Programming\test>svn co file:///D:\Programming\test co
Checked out revision 0.
D:\Programming\test>cd co
D:\Programming\test\co>echo "hello" > test.file
D:\Programming\test\co>svn add test.file
A test.file
D:\Programming\test\co>svn status
A test.file
D:\Programming\test\co>svn changelist mycl test.file
A [mycl] test.file
D:\Programming\test\co>svn status
--- Changelist 'mycl':
A test.file
D:\Programming\test\co>svn changelist --remove test.file
D [mycl] test.file
D:\Programming\test\co>svn status
A test.file
Bash中的自动化
说明:
:输出所有修改的文件svn状态
:找到变更列表,并在CL标题后获取输出,直到下一个CL或sed
的输出结束svn status
:从缓冲区中删除CL标题grep
:删除文件状态,只保留文件名(即第二列)awk
:将每一行作为参数放入xargs
svn变更列表
(如果文件名中有空格或特殊字符,则可能需要调整)
对于那些想知道的人,您可以使用svn使用一个命令来完成这项工作。只需导航到更改列表下的文件的目标级别目录,然后运行:
svn changelist --remove --recursive .
这将循环当前目录下的所有文件,并尝试将其与更改列表断开关联。如果只想删除一个更改列表(例如my_更改),请移动到工作副本的顶级文件夹并运行:
svn changelist --remove --recursive --cl my_changes .
赞成。。。我知道这种方法,但它太手工了。必须有一个自动更改列表删除命令…如果有,
svn help changelist
不列出它。。。或者使用--recursive开关。另外,将CL描述从svn status
复制到文件中,然后:cat file|sed's/[a-Z][:blank:+\(.*\)/\1/g'| xargs svn changelist--remove
,抱歉,无法测试,我手头没有unix命令行。嘿,根据我在上一条评论中的想法添加了一个脚本来帮助删除。我没有在实际的开发中使用它,但在一个示例repo中它起了作用(参见示例)。svn changelist--remove--changelist my_changes--depth infinity.
也应该起到作用。这非常有效。谢谢记住在末尾包含
,以捕获所有文件。完美。。。这正是我想要的。我确认了这很好地工作(在1.9.3中),只要您没有在任何外部中将项设置为变更列表。在这些情况下,您可能还需要指定每个外部路径。
~/tmp/wc$ svn status
A d
--- Changelist 'cl_a':
A a
A e
A f
--- Changelist 'cl_x':
A b
A c
~/tmp/wc$ svn_remove_cl cl_x
Path 'b' is no longer a member of a changelist.
Path 'c' is no longer a member of a changelist.
~/tmp/wc$ svn status
A b
A c
A d
--- Changelist 'cl_a':
A a
A e
A f
svn changelist --remove --recursive .
svn changelist --remove --recursive --cl my_changes .