Ich weiß, dass das nicht die Antwort ist, die Sie kennen, aber Sie können einen SVN- oder CVS-Server einrichten, was so viel einfacher wäre.
Ansonsten würde ich für rsync gehen.
Für einen aktuellen Kurs verwende ich einen Remote-Computer, um unseren Code auszuführen (Es ist ein Cluster mit vier Knoten, der mit MPI und C ++ programmiert).
Ich programmiere lokal auf meinem MacBook und suche nach einer guten Möglichkeit, meinen lokalen Code auf dem Cluster aktuell zu halten.
Die Art und Weise, wie ich das gemacht habe, war, dass ein Terminal zum Ausführen von SCP geöffnet wurde, um das Verzeichnis zu kopieren, und ein anderes Terminal, das in den Cluster geschickt wurde, um meinen Code zu erstellen und auszuführen.
Das scheint für mich nicht optimal zu sein. Gibt es eine Möglichkeit, das Senden der Dateien an den Cluster zu automatisieren, wenn sie geändert werden? Oder gibt es eine IDE (XCode, wenn möglich), die mir dies erlaubt?
Oder stecke ich mit dem einzeiligen Befehl fest, um alles zu verschieben? Ich verwende derzeit TextMate, um den Code zu schreiben.
Ihre beste Option, außer einer verteilten Versionskontrolle, verwendet rsync über ssh. Ich halte ein paar Maschinen synchron, indem ich Folgendes für jeden mache:
%Vor%Sie haben erwähnt, dass Sie ein MacBook verwenden - rsync ist unter Mac OS X. Soweit ich weiß, muss es nicht extra installiert werden. Und das Schöne an rsync ist, dass es nach Änderungen sucht und nur modifizierte Dateien kopiert. Es führt nicht gleichzeitige Änderungen wie ein verteiltes Versionskontrollsystem, aber wenn Sie wie ich sind, wo Sie etwas auf Ihrem Laptop arbeiten, dann arbeiten einige auf Ihrem Desktop, rsync ist die beste Möglichkeit, alle geänderten Dateien zu senden (und nur die geänderten Dateien) von einem zum anderen, wenn Sie den Modus wechseln.
Hinweis: Die hier verwendeten rsync-Optionen sind:
-u
, --update Überspringt Dateien, die neuer auf dem Empfänger sind -r
, --recursive recurse in Verzeichnisse -l
, --links kopieren Symlinks als Symlinks -t
, - behält die Änderungszeiten bei -v
, --verbose erhöht Ausführlichkeit --delete
löscht überflüssige Dateien von Zielverzeichnissen, fungiert als --delete-during
Schließlich ist -e
die Option, mit der Sie Ihre entfernte Shell angeben können, in diesem Fall ssh
Ihre beste Option, außer einer verteilten Versionskontrolle, verwendet rsync über ssh. Ich halte ein paar Maschinen synchron, indem ich Folgendes für jeden mache:
%Vor%Sie haben erwähnt, dass Sie ein MacBook verwenden - rsync ist unter Mac OS X. Soweit ich weiß, muss es nicht extra installiert werden. Und das Schöne an rsync ist, dass es nach Änderungen sucht und nur modifizierte Dateien kopiert. Es führt nicht gleichzeitige Änderungen wie ein verteiltes Versionskontrollsystem, aber wenn Sie wie ich sind, wo Sie etwas auf Ihrem Laptop arbeiten, dann arbeiten einige auf Ihrem Desktop, rsync ist die beste Möglichkeit, alle geänderten Dateien zu senden (und nur die geänderten Dateien) von einem zum anderen, wenn Sie den Modus wechseln.
Hinweis: Die hier verwendeten rsync-Optionen sind:
Schließlich ist %code% die Option, mit der Sie Ihre entfernte Shell angeben können, in diesem Fall ssh
Wenn Sie rsync verwenden können, wäre das wahrscheinlich der beste Weg.
Würde es sshfs ermöglichen, die Remote-Ordner als Option zu fusionieren? Sie können die Dateien entweder direkt bearbeiten oder rsync, unison oder ein beliebiges Ordner-zu-Ordner-Synchronisierungstool verwenden.
Ich weiß, dass das nicht die Antwort ist, die Sie kennen, aber Sie können einen SVN- oder CVS-Server einrichten, was so viel einfacher wäre.
Ansonsten würde ich für rsync gehen.
Für einen aktuellen Kurs verwende ich einen Remote-Computer, um unseren Code auszuführen (Es ist ein Cluster mit vier Knoten, der mit MPI und C ++ programmiert).
Ich programmiere lokal auf meinem MacBook und suche nach einer guten Möglichkeit, meinen lokalen Code auf dem Cluster aktuell zu halten.
Die Art und Weise, wie ich das gemacht habe, war, dass ein Terminal zum Ausführen von SCP geöffnet wurde, um das Verzeichnis zu kopieren, und ein anderes Terminal, das in den Cluster geschickt wurde, um meinen Code zu erstellen und auszuführen.
Das scheint für mich nicht optimal zu sein. Gibt es eine Möglichkeit, das Senden der Dateien an den Cluster zu automatisieren, wenn sie geändert werden? Oder gibt es eine IDE (XCode, wenn möglich), die mir dies erlaubt?
Oder stecke ich mit dem einzeiligen Befehl fest, um alles zu verschieben? Ich verwende derzeit TextMate, um den Code zu schreiben.
Wahrscheinlich nicht das, wonach Sie suchen, aber Sie sollten sich eine DSCM wie git ansehen:
Noch besser als rsync ist der Unison-Dateisynchronisierer , mit dem Sie Änderungen an beiden vornehmen können beenden und erkennen und helfen bei der Lösung von Konflikten. Es funktioniert über ssh.
Noch besser als rsync ist der Unison-Dateisynchronisierer , mit dem Sie Änderungen an beiden vornehmen können beenden und erkennen und helfen bei der Lösung von Konflikten. Es funktioniert über ssh.
Wahrscheinlich nicht das, wonach Sie suchen, aber Sie sollten sich eine DSCM wie git ansehen:
Tags und Links synchronization development-environment