Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从SVN中删除现有变更列表_Svn_Changelist - Fatal编程技术网

如何从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状态
    :输出所有修改的文件
  • sed
    :找到变更列表,并在CL标题后获取输出,直到下一个CL或
    svn status
    的输出结束
  • grep
    :从缓冲区中删除CL标题
  • 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 .