2009-09-22 83 views
1

有一個類似的帖子@How to add CVS directories recursively遞歸CVS添加文件/目錄,而忽略現有的CVS文件

然而,嘗試一些問題的答案,如:

find . -type f -print0| xargs -0 cvs add 

都給:

cvs add:無法打開CVS /條目 閱讀:無此文件或目錄cvs [add aborted]:無存儲庫

而且

find . \! -name 'CVS' -and \! -name 'Entries' -and \! -name 'Repository' -and \! -name 'Root' -print0| xargs -0 cvs add 

都給:

CVS補充:可以不加特殊的文件`'。 跳過

有沒有人有更徹底的解決方案遞歸添加新文件到CVS模塊?如果我可以在〜/ .bashrc中加入別名,或者沿着這些線加入別的東西,那將會很棒。

是的,我知道它有點過時,但我不得不爲某個項目使用它,否則我會使用git/hg。

+0

我在想第二行我可以添加\!名稱 '。'和\!名字'..'但也許有人有更有創意的解決方案.. – 2009-09-22 19:44:29

回答

2

這可能是多一點優雅:

find . -type f -print0 | egrep -v '\/CVS\/|^\.$' | xargs -0 cvs add 

請注意,print0,而對於處理包含空格的文件名是非常有用的,不是普遍的 - 它不是,例如,在Solaris中的發現。

1
find . -name CVS -prune -o -type f -print0 
0

this answer of mine的報價爲問題的解釋爲什麼你得到「無法打開CVS /項閱讀」的錯誤。爲了添加一個文件或文件夾的父文件夾

  • 文件夾必須添加,也
  • :牢記看着這裏提供的其他解決方案時

    兩個重要的事情項目必須已經被添加,所以項目處理的順序是非常重要的

所以,如果你剛剛開始填充你的倉庫,你還沒有任何東西要檢查,將創建添加文件的上下文然後cvs add不能使用 - 或者至少不能直接使用。您可以創建由第一個文件夾的父文件夾調用以下命令「根上下文」你要添加:

cvs co -l . 

這將創造必要的沙元數據(即一個隱藏的「便利店「包含」Root「,」Repository「和」Entries。*「文件的子文件夾),這將允許您使用add命令。