【问题标题】:Is there a way to get a short CVS status from command line?有没有办法从命令行获得简短的 CVS 状态?
【发布时间】:2008-10-17 11:37:13
【问题描述】:

执行cvs update 时,您会得到一个很好的存储库状态摘要,例如:

M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt

有没有办法在不实际更新的情况下获得这个?我知道有cvs status,但这是冗长的方式:

===================================================================
File: file6.txt        Status: Up-to-date

Working revision:    1.2
Repository revision: 1.2     /var/cvs/cvsroot/file6.txt,v
Sticky Tag:          (none)
Sticky Date:         (none)
Sticky Options:      (none)

我当然可以编写一个脚本来完成从后者到前者的转换,但这似乎是浪费时间,因为 cvs 显然可以生成前者。

【问题讨论】:

    标签: cvs


    【解决方案1】:

    您可以使用 -n 标志来获取更新输出,而无需实际更新文件。您还可以添加 -q(安静)来抑制任何服务器消息。

    cvs -q -n update
    

    【讨论】:

    • "cvs -n update" 是预览 CVS 更新的绝佳解决方案(谢谢),但似乎不适用于标签。例如,“cvs -n update -dP -r DRUPAL-5-15”给出“cvs [update aborted]: no such tag `DRUPAL-5-13'”,但该标签绝对有效,如“cvs update - dP -r DRUPAL-5-15" 工作正常。
    • 这很有帮助。添加 alias cvs-st="cvs -q -n update" 后,我对 git-withdrawl 的抱怨少了一点
    【解决方案2】:

    @jmcnamara:很好的提示!

    我一直在使用这个 bash 脚本:

    cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'
    

    【讨论】:

      【解决方案3】:

      我有一些别名,可能对某人有用:

      alias cvsstatus_command='cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | \
          grep -v "\.so" | grep -v "\.[c]*project"'
      
      alias cvsstatus_color='nawk '"'"'BEGIN \
          { \
              arr["Needs Merge"] = "0;31"; \
              arr["Needs Patch"] = "1;31"; \
              arr["conflicts"] = "1;33"; \
              arr["Locally Modified"] = "0;33"; \
              arr["Locally Added"] = "0;32" \
          } \
          { \
              l = $0; \
              for (pattern in arr) { \
                  gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
              } \
              print l; \
          }'"'"
      
      alias cvsstatus='cvsstatus_command | cvsstatus_color'
      

      这将仅显示文件名及其状态,忽略所有最新文件,删除所有 eclipse 项目文件和共享对象,并且还将根据状态以不同颜色打印行 (例如,橙色表示本地修改;红色表示文件,需要合并;绿色表示本地添加等)

      【讨论】:

      • 优秀的方法!正是我想要的。
      【解决方案4】:

      如果您使用 CVSNT,您也可以只执行cvs status -q,这也将产生比常规状态命令更简短的输出(每个文件也只有一行)。对于更新的版本,您甚至可以使用 cvs status -qq 跳过最新文件。

      【讨论】:

        猜你喜欢
        • 2012-03-10
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 2019-10-01
        相关资源
        最近更新 更多