Verwenden Sie Unison, um nur Ordner mit dem Namen `src` zu synchronisieren

371
Sacha T Red

Ich habe einen Laptop, der an eine Cloud-Workstation angeschlossen ist. Alle meine Kompilierungen finden auf der Cloud-Workstation statt, aber ich ändere Dateien auf meinem Laptop. Ich möchte Dateien zwischen den beiden Dateien synchronisieren, aber ich möchte, dass nur Quelldateien synchronisiert werden, nicht Build, Konfiguration usw. Ich möchte es so machen, dass, wenn ein Ordner benannt wird src, er und sein Inhalt rekursiv synchronisiert werden.

Zum Beispiel ~/workspace/src/file1.cppund ~/workspace/src/myfolder/file2.cppsynchronisieren, ~/workspace/build/file3.cppaber nicht. Ich mache immer wieder Projekte und lösche Projekte, und ich möchte nicht jedes Mal, wenn ich ein neues Projekt mit einem neuen srcVerzeichnis erstellt habe, Dateipfade für die Synchronisierung neu konfigurieren .

Im Moment verwende ich das Unison-Dateisynchronisierungstool für Mac, und ich weiß nicht, wie das geht. Kann mir jemand zeigen?

2

1 Antwort auf die Frage

0
Mike Pierce

Leider scheint es, dass Unison (alleine) dies nicht ohne weiteres tun kann. Aus der Nutzung von ignorenot xxxin dem Unison Handbuch :

Insbesondere das Einfügen ignore = Path *Ihres Profils und das Verwenden ignorenotbestimmter Pfade, die synchronisiert werden sollen, funktioniert nicht. Stattdessen sollten Sie die Pfadeinstellung verwenden, um bestimmte zu synchronisierende Pfade auszuwählen.

Da dies genau das war, was ich als Lösung im Sinn hatte, bedeutet das, dass es keine gute Lösung gibt. Hier einige nützliche Ideen:

  1. Fügen Sie manuell für jedes Projekt einen neuen Pfad hinzu : Genau das schlägt das obige Zitat vor. Fügen Sie für jedes neue Projekt, das Sie starten, und jedes neue srcVerzeichnis, das Sie synchronisieren möchten, eine Zeile hinzu

    Path = path/to/src 

    zu Ihrem Unison-Profil.

  2. Ignorieren Sie die Build- und Konfigurationsdateien manuell : Vielleicht haben alle Build- und Konfigurationsdateien nur ein paar verschiedene Muster, denen Sie zuordnen können? Sie können Unison anweisen, diese Muster insbesondere zu ignorieren, indem Sie Ihrem Unison-Profil etwas hinzufügen

    ignore = Name *.o #ignore object files ignore = Name build #ignore paths that end with "build" ignore = Name {.*,*}.sw[ponx] #ignore pesky vim swap files ignore = ... 
  3. Schreiben Sie ein Skript, um zu helfen : Sie könnten sicherlich ein Skript schreiben, das nach allen genannten Verzeichnissen sucht srcund Unison einzeln für sie aufruft. Aber das scheint irgendwie dumm zu sein. Sie könnten jedoch ein Skript schreiben, das bei Punkt (1) oben hilfreich ist. Schreiben Sie ein Skript, das alle benannten Pfade findet src, und fügen Sie für jeden dieser Pfade die Zeile hinzu

    Path = /path/to/src 

    zu einer Datei AllThePaths, und dann nur noch die Zeile

    include AllThePaths 

    in Ihrem Unison-Profil.