Umgang mit einem Subversion-Repo und einem neuen Benutzer, der nicht ganz verstanden hat, wie es funktioniert.
Kurz gesagt, da ihre lokale Struktur durch das Kopieren zufälliger .svn-Ordner durcheinander gebracht wurde, habe ich Folgendes getan:
- kopierte die lokale Struktur in einen Ordner namens Staging
- Alle .svn-Ordner wurden rekursiv aus dem Staging-Verzeichnis gelöscht
- checkte das Repo in einen "sauberen Ordner"
Jetzt sind wir beim letzten Schritt angelangt: Der Inhalt des Staging-Ordners wird überschrieben, um den sauberen Inhalt zu überschreiben.
Ich brauche einen Befehl, der den Inhalt des Staging-Verzeichnisses in das Bereinigungsverzeichnis kopiert und alles entfernt, was sich nur im Bereinigungsverzeichnis befindet, ABER die .svn-Ordner des Bereinigungsordners bleiben erhalten.
Das klingt nach einem Job für rsync. Wäre der folgende Befehl korrekt?
rsync -avr --exclude=.svn* [staging] [clean]
rsync
subversion
SeanKilleen
quelle
quelle
rsync
mit der--dry-run
Option laufen , um herauszufinden!Antworten:
Die
-C
Option für rsync kann das sein, was Sie wollen.Lassen Sie sich jedoch nicht von der kurzen Beschreibung auf der Manpage täuschen. Es scheint, dass die Option nur für CVS gilt, aber abhängig von Ihrer rsync-Version werden die Dateien fast aller gängigen Versionskontrollsysteme übersprungen.
quelle
*.a
ist für iOS Static Libraries.Fast - das sollte sein
oder jede andere Form des Zitierens, die verhindert, dass die Shell den Platzhalter erweitert. (Der Platzhalter würde nur mit einer unwahrscheinlichen Datei übereinstimmen, deren Name mit beginnt. Es
--exclude=.svn
ist jedoch besser, das Risiko nicht einzugehen und auch dann ordnungsgemäß zu funktionieren, wenn die Shell so konfiguriert ist, dass nicht übereinstimmende Platzhalter erstickt oder auf die leere Liste erweitert werden. )-r
ist bereits enthalten in-a
. Das Extrar
ist einfach überflüssig, es schadet nicht.--exclude
bewirkt, dass Dateien, die mit seinem Argument übereinstimmen, weder kopiert noch für eine rekursive Durchquerung berücksichtigt werden. Die übliche Schwierigkeit bei rsync besteht darin, in die andere Richtung zu gehen und ein Verzeichnis mit Ausnahme bestimmter Teile davon auszuschließen. Einige Tipps finden Sie unter Rsync-Filter: Kopieren nur eines Musters .In diesem speziellen Fall ist das Ausschließen von Versionskontrollverzeichnissen eine schnelle Möglichkeit, das zu erhalten, was Sie möchten.
quelle