How do I identify what branches exist in CVS?

前端 未结 6 699
一个人的身影
一个人的身影 2021-02-04 00:12

I have a legacy CVS repository which shall be migrated to Perforce.

For each module, I need to identify what branches exist in that module.

I just want a list of

相关标签:
6条回答
  • 2021-02-04 00:50

    As a quick hack:) The same stands true for rlog.

    cvs log -h | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u
    

    Improved version as per bdevay, hiding irrelevant output and left-aligning the result:

    cvs log -h 2>&1 | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | awk '{print $1}' | sort -u
    
    0 讨论(0)
  • 2021-02-04 00:51

    Check for the very first file created and committed in the repository. Open the file in server which will list all the Tags and Branches together

    0 讨论(0)
  • 2021-02-04 00:53

    I have a small collection of "handy" korn shell functions one of which fetches tags for a given file. I've made a quick attempt to adapt it to do what you want. It simply does some seding/greping of the (r)log output and lists versions which have ".0." in them (which indicates that it's a branch tag):

    get_branch_tags()
    {
        typeset FILE_PATH=$1
    
        TEMP_TAGS_INFO=/tmp/cvsinfo$$
    
        /usr/local/bin/cvs rlog $FILE_PATH 1>${TEMP_TAGS_INFO} 2>/dev/null
    
        TEMPTAGS=`sed -n '/symbolic names:/,/keyword substitution:/p' ${TEMP_TAGS_INFO} | grep "\.0\." | cut -d: -f1 | awk '{print $1}'`
        TAGS=`echo $TEMPTAGS | tr ' ' '/'`
        echo ${TAGS:-NONE}
        rm -Rf $TEMP_TAGS_INFO 2>/dev/null 1>&2
    }
    
    0 讨论(0)
  • 2021-02-04 00:57

    This will bring up tags too, but tags and branches are basically the same in CVS.

    $cvs.exe rlog -h -l -b module1
    
    0 讨论(0)
  • 2021-02-04 01:06

    with Wincvs (Gui client for windows) this is trivial, a right click will give you any branches and tags the files have.

    Trough a shell you may use cvs log -h -l module.

    0 讨论(0)
  • 2021-02-04 01:08

    You could simply parse log output of cvs log -h. For each file there will be a section named Symbolic names :. All tags listed there that have a revision number that contains a zero as the last but one digit are branches. E.g.:

    $ cvs log -h
    
    Rcs file : '/cvsroot/Module/File.pas,v'
    Working file : 'File.pas'
    Head revision : 1.1
    Branch revision : 
    Locks : strict
    Access :
    Symbolic names :
        1.1 : 'Release-1-0'
        1.1.2.4 : 'Release-1-1'
        1.1.0.2 : 'Maintenance-BRANCH'
    Keyword substitution : 'kv'
    Total revisions : 5
    Selected revisions : 0
    Description :
    
    ===============================================
    

    In this example Maintenance-BRANCH is clearly a branch because its revision number is listed as 1.1.0.2. This is also sometimes called a magic branch revision number.

    0 讨论(0)
提交回复
热议问题