【问题标题】:CVS: show files that are locally changedCVS:显示本地更改的文件
【发布时间】:2010-01-16 00:07:43
【问题描述】:

是否有任何简单的方法来仅显示我的存储库中已在本地添加、删除或修改的文件?我知道我可以键入“cvs stat”并查看文件列表,但这很乏味且容易出错。我想知道是否有更简单的方法。我正在使用 CVS 1.11.17,以防万一。

【问题讨论】:

    标签: cvs


    【解决方案1】:

    “虚拟”更新将为您提供此信息。

    cvs -qn update
    

    所用选项的简短描述:

    -q      Cause CVS to be somewhat quiet.
    -n      Do not execute anything that will change the disk.
    

    【讨论】:

    • 为什么不使用diff
    【解决方案2】:

    您可以使用 cvs diff 命令获取差异的简短列表:

    cvs -q diff --brief
    

    【讨论】:

      【解决方案3】:

      将其发送至grep

      cvs -Q status | grep -i locally
      

      【讨论】:

      • 我试过了,但我不是很喜欢。我想查看更改文件的路径,而不仅仅是文件名。我试过 cvs stat 2>/dev/null |grep Local -B1 -A4 |grep -vE "^$" 好一点,但有点乱和古怪。
      【解决方案4】:

      这是我使用的:

      cvs -Q status | grep -A 4 Locally | egrep -v '^\-\-|^   Working|^   Commit|^$' | awk '{print $2 " " $4}' | sed -e 's/\<Locally\>//;s/revision: \CVS-REPOSITORY-PATH/\t\t/'
      

      输出:

      pin_stages.ref 
                  tests/unit/ccsn/pin_stages/pin_stages.ref,v
      pin_stages_func.ref 
                  tests/unit/ccsn/pin_stages_func/pin_stages_func.ref,v
      

      【讨论】:

        【解决方案5】:

        这里是nmake-perl脚本列表修改文件,它是基于上述的cvs update -qn:

        DIRS=\
          c:\project1\
          c:\project2
        
        all: $(DIRS)
          !cd $? & cvs -qn update | perl -ne "s!\/!\\!g;print '$?\\'.qq($$1) if /^M (.*)/s;"
        

        【讨论】:

          【解决方案6】:

          进行 CVS 更新 以 M 开头的文件是修改后的文件。

          例子:

          CVS Update
          cvsntsrv server: Updating dat/idv
          M dat/idv/conduct.idv  = Modified
          ...
          

          【讨论】:

            【解决方案7】:

            作为常用的cvs update -qn 的替代方法,您可以使用cvs release 命令。但是这个是交互式的,并在输出结束时要求确认(所以你只需要中止它!)。正常输出:

            > cvs release .
            ...
            U some/updated/file
            M some/modified/file
            ...
            You have [1] altered files in this repository.
            Are you sure you want to release directory `.': n
            ** `release' aborted by user choice.
            >
            

            在问题Are you sure you want to release directory '.': 之后,您输入的内容与yY 不同。

            【讨论】:

              【解决方案8】:

              您可以使用以下命令获取您在本地修改的文件列表

              cvs -qn 更新 | grep "M" | awk '{print $2}'

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-03-07
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多