.Svn klasörleri ve alt içerikleri dışında Rsync?


10

Bir yıkım repo ve nasıl çalıştığını tam olarak anlamayan yeni bir kullanıcıyla uğraşmak.

Uzun lafın kısası, yerel yapıları rastgele .svn klasörlerinin kopyalanması nedeniyle berbat olduğundan, aşağıdakileri yaptım:

  • yerel yapıyı evreleme adlı bir klasöre kopyaladı
  • hazırlama dizindeki tüm .svn klasörlerini özyinelemeli olarak sildi
  • "temiz bir klasöre" repo atın

Şimdi son adımdayız - temiz içeriklerin üzerine yazmak için hazırlama klasörü içeriğinin alınması.

Ben sadece temiz dizinde olan her şeyi kaldırarak evreleme dizinin içeriğini kopyalamak için bir komut kopyalamak gerekir, AMA temiz klasörün .svn klasörleri inceliğinde bırakarak.

Bu rsync için bir iş gibi geliyor. Aşağıdaki komut doğru olur mu?

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

6
Her zaman öğrenme seçeneği rsyncile koşabilirsiniz --dry-run!
Tim

Hahaha teşekkürler! Bu seçeneğin var olduğu hakkında hiçbir fikrim yoktu. Adamı daha dikkatli okumalıydım!
SeanKilleen

Yanıtlar:


31

-CRsync için seçenek istediğini olabilir.

Man sayfasındaki kısa açıklamanın sizi aldatmasına izin vermeyin. Bu seçenek sadece CVS için geçerli gibi görünüyor, ancak rsync sürümünüze bağlı olarak, var olan hemen hemen her yaygın sürüm kontrol sisteminin dosyalarını atlayacaktır.

# 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
Çok dikkatli olun, çünkü bu uzantılar kopyalanmasını istediğiniz dosyalar için kullanılabilir, örn. *.aiOS Statik Kitaplıklar içindir.
Max Chuquimia

NB dosyaları ve dizinleri hariç tutulur: "core" adlı herhangi bir klasör kopyalanmaz, örn. / Myproj / api / / myproj / core / <- yedeklenmedi!
teknopaul

7

Neredeyse - bu olmalı

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

veya kabuğun joker karakteri genişletmesini engelleyen başka bir alıntılama türü. (Joker karakter, yalnızca adı ile başlayan beklenmedik bir dosyayla eşleşir --exclude=.svn, ancak risk almamak ve kabuk eşleşmeyen joker karakterleri boğmak veya bunları boş listeye genişletmek için yapılandırılmış olsa bile doğru şekilde çalışmak daha iyidir. )

-rzaten dahil -a. Ekstra rsadece gereksiz, herhangi bir zarar vermez.

--excludeargümanıyla eşleşen dosyaların ne kopyalanmasına ne de özyinelemeli geçiş için dikkate alınmamasına neden olur. Rsync ile ilgili olağan zorluk, belirli bölümleri dışında bir dizin hariç olmak üzere diğer yöne gidiyor. Bkz. Rsync filtresi: yalnızca bazı ipuçları için bir desenin kopyalanması .

Bu özel durumda, sürüm kontrol dizinlerini hariç tutmak istediğinizi elde etmenin hızlı bir yoludur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.