how do I remove an existing changelist from SVN

后端 未结 3 944
忘了有多久
忘了有多久 2021-01-31 15:02

I created a changelist by doing...

$ svn changelist my_changes

... added files to it, and then committed the changelist...

$ sv         


        
相关标签:
3条回答
  • 2021-01-31 15:16

    For those that are wondering, you can do this with a single command with svn. Simply navigate to the to level directory of files under your change list exist and run:

    svn changelist --remove --recursive .
    

    This will loop over all files under the current directory and attempt to disassociate them from the change list.

    0 讨论(0)
  • 2021-01-31 15:19

    Remove all the associated files from a changelist and it'll disappear.

    Official way

    See https://stackoverflow.com/a/15992735/253468

    svn changelist --remove --recursive --cl my_changes .
    

    Manual way

    i.e. svn changelist --remove file.name

    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
    

    Automation in Bash

    # Remove all files from a specific CL
    # Usage: svn_remove_cl my_changes
    function svn_remove_cl() {
        svn status |\
        sed -n "/--- Changelist '$1':/,/--- Changelist.*/p" |\
        grep -v '^--- Changelist' |\
        awk '{print $2}' |\
        xargs svn changelist --remove
    }
    

    Explanation:

    • svn status: output all the modified files
    • sed: find the changelist and take the output after the CL title until the next CL or the end of svn status's output
    • grep: remove the CL titles from the buffer
    • awk: remove the file statuses, keep only the filenames (i.e. the second column)
    • xargs: put each line as an argument to svn changelist
      (may need tweaks if you have spaces or special characters in the filenames)

    Example run

    ~/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
    
    0 讨论(0)
  • 2021-01-31 15:25

    If you want to delete just one changelist (e.g. my_changes) move to the top level folder of your working copy and run:

    svn changelist --remove --recursive --cl my_changes .
    
    0 讨论(0)
提交回复
热议问题