.svnフォルダーとそのサブコンテンツを除くRsync?


10

Subversionリポジトリと、それがどのように機能するかを十分に理解していない新しいユーザーに対処する。

要するに、ランダムな.svnフォルダーのコピーが原因でローカル構造が台無しになったため、次のことを行いました。

  • ローカル構造をステージングと呼ばれるフォルダーにコピーしました
  • ステージングディレクトリからすべての.svnフォルダを再帰的に削除しました
  • 「クリーンフォルダー」にレポをチェックアウトしました

これで最終段階になりました。ステージングフォルダーのコンテンツを取得して、クリーンなコンテンツを上書きします。

コマンドでステージングディレクトリの内容をクリーンディレクトリにコピーし、クリーンディレクトリのみにあるものをすべて削除する必要がありますが、クリーンフォルダの.svnフォルダはそのまま残します。

これはrsyncの仕事のように思えます。次のコマンドは正しいでしょうか?

rsync -avr --exclude=.svn* [staging] [clean]

5
あなたはいつでも見つけるためrsync--dry-runオプションで実行することができます!
ティム

ハハハ、ありがとう!オプションが存在することを知りませんでした。男をもっと注意深く読むべきだった!
SeanKilleen

回答:


30

-Crsync のオプションは、あなたが望むものかもしれません。

ただし、manページの短い説明に惑わされないでください。このオプションはCVSにのみ適用されるように見えますが、rsyncのバージョンによっては、存在するほぼすべての一般的なバージョン管理システムのファイルをスキップします。

# rsync version: 3.0.7

-C, --cvs-exclude           auto-ignore files in the same way CVS does

...

          The exclude list is initialized to exclude the  following  items
          (these  initial  items are marked as perishable — see the FILTER
          RULES section):

                 RCS  SCCS  CVS  CVS.adm   RCSLOG   cvslog.*   tags   TAGS
                 .make.state  .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak
                 *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so  *.exe
                 *.Z *.elc *.ln core .svn/ .git/ .bzr/

          then,  files  listed in a $HOME/.cvsignore are added to the list
          and any files listed in the CVSIGNORE environment variable  (all
          cvsignore names are delimited by whitespace).

2
これらの拡張子は、コピーしたいファイルに使用される可能性があるため、非常に注意してください。*.aiOS静的ライブラリ用です。
マックスチュキミア14

NBファイルとディレクトリは除外されます。「コア」と呼ばれるフォルダーはコピーされません。例:/ myproj / api / / myproj / core / <-バックアップされません!
-teknopaul

6

ほとんど—これは

rsync -av --exclude='.svn*' [staging] [clean]

または、シェルがワイルドカードを展開するのを防ぐその他の形式の引用。(ワイルドカードは、名前がで始まる可能性の低いファイルにのみ一致しますが--exclude=.svn、リスクを冒さないようにし、シェルが一致しないワイルドカードでチョークしたり、空のリストに展開するように構成されていても正しく動作することをお勧めします。 )

-rはに既に含まれてい-aます。余分なものrは不要であり、害はありません。

--exclude引数に一致するファイルはコピーされず、再帰的な走査も考慮されません。rsyncの通常の難しさは、ディレクトリの特定の部分を除いてディレクトリを除外することです。一部のヒントについては、Rsyncフィルター:1つのパターンのコピーを参照してください。

この特定のケースでは、バージョン管理ディレクトリを除外すると、目的のものをすばやく取得できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.