Frage

Sie wissen also, dass viele Mac-Apps „Bundles“ verwenden:Für Ihre Anwendung sieht es wie eine einzelne Datei aus, in Wirklichkeit handelt es sich jedoch um einen Ordner mit vielen darin enthaltenen Dateien.

Damit ein Versionskontrollsystem damit umgehen kann, muss es:

  • Überprüfen Sie alle Dateien in einem Verzeichnis, damit die App sie bei Bedarf ändern kann
  • beim Einchecken,
    • Commit-Dateien, die geändert wurden
    • Fügen Sie neue Dateien hinzu, die die Anwendung erstellt hat
    • Als gelöschte Dateien markieren, die nicht mehr vorhanden sind (da die App sie gelöscht hat)
    • Bewältigen Sie dies als eine atomare Veränderung

Irgendwelche Ideen, wie man dies am besten mit vorhandenen Versionskontrollsystemen handhaben kann?Sind die Versionierungssysteme in diesem Bereich besser geeignet?

War es hilfreich?

Lösung

Für verteilte SCM-Systeme wie Git und Mercurial sollte das kein Problem sein, wie Matthew erwähnte.

Wenn Sie einen zentralen SCM wie Subversion oder CVS verwenden müssen, können Sie Ihre Bundles komprimieren (archivieren), bevor Sie sie in die Quellcodeverwaltung einchecken.Dies kann schmerzhaft sein und erfordert einen zusätzlichen Schritt.Es gibt einen guten Blogbeitrag dazu bei Tapestry Central:

Mac OS X-Bundles vs.Subversion

Dieser Artikel demonstriert ein Ruby-Skript, das die Archivierung für Sie verwaltet.

Andere Tipps

Mercurial basiert insbesondere auf der Datei- und nicht auf der Verzeichnisstruktur.Daher spuckt Ihr Arbeitsbaum, der ein vollwertiges Repository ist, nicht auf jeder Ebene .svn-Ordner aus.

Dies bedeutet auch, dass ein Verzeichnis, das ersetzt wird, wie z. B. eine Anwendung oder ein anderes Bundle, seinen Inhalt mit bestimmten Dateinamen weiterhin unter Revisionskontrolle vorfindet.Dateinamen werden überwacht, keine Inodes oder ähnliches!

Wenn dem Bundle eine neue Datei hinzugefügt wird, müssen Sie diese natürlich explizit zu Ihrem Repository hinzufügen.Ebenso sollte das Entfernen einer Datei aus einem Bundle mit einem „hg rm“ erfolgen.

Es gibt noch keine anständigen Mercurial-GUIs für OS

Ein Update aus der Zukunft:

Wenn ich mich recht erinnere, bestand das Problem bei der Verwaltung von Bundles in SVN darin, dass bei jedem Erstellen eines Bundles alle .svn-Ordner geleert wurden.Dies sollte kein Problem mehr sein, da SVN nun alles in einem einzigen .svn-Ordner im Stammverzeichnis speichert.

Ich bringe diesen Thread wieder ans Tageslicht, da iWork (Pages 5.0 usw.) seit Oktober 2013 das Speichern in „Flat File“ (gezippt) nicht mehr erlaubt, sondern nur noch als Bundles.

Das Problem ist nicht die Erstellung von versteckten Versionskontrollordnern innerhalb solcher Strukturen (naja, für SVN schon), sondern wie Markieren sagt in der Frage:Ich erhalte eine automatische, atomare Aktualisierung der hinzugefügten oder entfernten Dateien (von der Anwendung, in diesem Fall iWork), sodass ich das nicht manuell tun muss.

Offensichtlich stört iWork und Apple nur die Benutzerfreundlichkeit von iCloud.Dennoch habe ich ein echtes Argument dafür, .pages, .numbers und .keynote in einem Mercurial-Repo zu speichern.Nach dem Update sprengt es alles.Was zu tun?

Nachtrag:

Gefunden 'hg addremove' Das reicht für mich.

$ hg help addremove
hg addremove [OPTION]... [FILE]...

add all new files, delete all missing files
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top