Domanda

Così si conosce un sacco di applicazioni Mac uso "bundle":Si presenta come un unico file per la vostra applicazione, ma in realtà è una cartella con molti file all'interno.

Per un sistema di controllo di versione per gestire questo, è necessario:

  • controllare tutti i file in una directory, in modo che l'applicazione può modificare, se necessario,
  • al check-in,
    • commettere i file che sono stati modificati
    • aggiungere nuovi file che l'applicazione ha creato
    • segno di come i file cancellati che non ci sono più (dal momento che l'applicazione cancellato)
    • gestire questo come uno atomica cambiare

Tutte le idee sul modo migliore per gestire questo con gli attuali sistemi di controllo di versione?Sono dei sistemi di versioning più esperto in questo settore?

È stato utile?

Soluzione

Per la distribuzione dei sistemi SCM, come git e mercurial non dovrebbe essere un problema, come Matteo citato.

Se è necessario utilizzare un SCM come Subversion o CVS, quindi si possono comprimere (archivio) il bundle prima di controllare in controllo del codice sorgente.Questo può essere doloroso e richiede un ulteriore passaggio.C'è un ottimo post su questo blog a Arazzo Centrale:

Mac OS X fasci vsSubversion

In questo articolo viene illustrato un ruby script che gestisce l'archiviazione per voi.

Altri suggerimenti

Mercurial, in particolare, le versioni basate su file, non la struttura di directory.Pertanto, albero di lavoro, che è un vero e proprio repository, non sputare .svn cartelle ad ogni livello.

Significa anche che una directory che viene sostituito, come un'Applicazione o un altro Bundle, si trovano ancora i suoi contenuti con particolare nomi di file sotto il controllo di revisione.I nomi dei File vengono monitorati, non inode o niente di simile!

Ovviamente, se un nuovo file è stato aggiunto al Bundle, avrai bisogno di aggiungere esplicitamente che questo repository.Analogamente, la rimozione di un file da un Bundle dovrebbe essere fatto con un 'hg rm'.

Non ci sono più decente Mercurial Gui di OS X, ma se tutto quello che dovrete fare è aggiungere/commit/unione, non è così difficile utilizzare una riga di comando.

Un aggiornamento dal futuro:

Se non ricordo male, il problema con la gestione di fasci in SVN era tutto .svn le cartelle sempre azzerato ogni volta che si è fatto un bundle.Questo non dovrebbe più essere un problema, ora che SVN negozi tutto in un unico .svn cartella alla radice.

Portando questo thread torna alla luce, dall'ottobre 2013 iWork (Pages 5.0 etc.) non è più permette di memorizzare in "flat file" (file zip), ma solo come pacchi.

Il problema non è la creazione di controllo di versione cartelle nascoste all'interno di tali strutture (beh, per svn è), ma come Mark dice in questione:ottenere in automatico, l'aggiornamento dei file aggiunti o rimossi (con l'applicazione, in questo caso iWork) quindi non avrei bisogno di farlo manualmente.

Chiaramente, iWork e Apple sono solo infastidito da iCloud usabilità.Eppure ho un vero caso per la memorizzazione .pagine .numeri e .keynote in un Mercurial repo.Dopo l'aggiornamento, soffia tutto diverso.Cosa fare?

Addendum:

Trovato 'hg addremove'che fa il trucco per me.

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

add all new files, delete all missing files
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top