如何递归添加CVS目录

Chr*_*nch 40 cvs

我已经玩了一点CVS,并不是最熟悉它的所有功能,但对我来说,一个巨大的烦恼是试图添加包含更多目录的新目录.运行" cvs add"只会添加当前目录的内容,并且使用" cvs import"看起来不是正确的事情,因为它仍然是我正在生成的所有代码(这个如何声明导入是针对第三方源)

你们知道以任何方式递归地将给定目录中的所有内容添加到当前的CVS项目中(或者如果SVN或git使这更容易)吗?

小智 73

我发现这非常有效:

首先,添加所有目录,但不添加任何命名的"CVS":

find . -type d \! -name CVS -exec cvs add '{}' \;
Run Code Online (Sandbox Code Playgroud)

然后添加所有文件,不包括CVS目录中的任何内容:

find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)
Run Code Online (Sandbox Code Playgroud)

现在,如果有人能够治愈在这个时代使用CVS的尴尬......

  • 简单易用,简单易用或1或2人非分支"备份"和"共享"源代码控制 (3认同)
  • 我在具有数百个目录和数千个文件的目录层次结构上使用它,就像一个魅力.谢谢! (2认同)

Mar*_*son 10

啊,空格.这将适用于空格:

find . -type f -print0| xargs -0 cvs add
Run Code Online (Sandbox Code Playgroud)

  • 你实际上必须确保你没有将名为'CVS'的目录添加到cvs,由于某种原因cvs有时会捕获它,有时它不会.改为运行:find.\!-name"CVS" - 和\!-name"条目" - 和\!-name"Repository" - 和\!-name"Root"-ty (7认同)

man*_*ela 9

我用这个:

首先递归地添加所有目录,而不是CVS:

$> find . -type d \! -name CVS -exec cvs add '{}' \;
Run Code Online (Sandbox Code Playgroud)

第二步添加所有文件,少于CVS目录:

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs add '{}' \; \)

第三,像"第一版"评论一样递归"提交":

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs commit -m "first version" '{}' \; \)

最后一次递归标记:

 find . \( -type d -name CVS -prune \) -o \( -type f -exec cvs tag -F MY_CVS_TAG '{}' \; \)


小智 6

首先将所有目录添加到CVS

find . -type d -print0| xargs -0 cvs add
Run Code Online (Sandbox Code Playgroud)

然后将目录中的所有文件添加到CVS

find . -type f | grep -v CVS | xargs cvs add
Run Code Online (Sandbox Code Playgroud)

为我工作