Script / strumento per importare serie di istantanee, ognuna delle quali è una nuova edizione, in GIT, popolando l'albero dei sorgenti? [chiuso]

0

Ho sviluppato codice locale e ho acquisito un'istantanea abbastanza regolare ogni volta che raggiungo un punto significativo nello sviluppo, ad es. una build funzionante.

Quindi ho una lunga lista di circa 40 cartelle, ciascuna delle quali è un'istantanea, ad es. in ordine ascendente alla data AAAAMMGG, ad esempio: -

  1. 20100523
  2. 20100614
  3. 20100721
  4. 20100722
  5. 20100809
  6. 20100901
  7. 20101001
  8. 20101003
  9. 20101104
  10. 20101119
  11. 20101203
  12. 20101218
  13. 20110102

Sto cercando uno script per importare ciascuna di queste istantanee in GIT. Il risultato finale è che il codice più recente è uguale all'ultima istantanea, e le altre edizioni sono accessibili e numerate.

Alcuni altri requisiti:

  • che l'ultima edizione non è cumulativa delle istantanee precedenti, vale a dire, i file che sono apparsi negli snapshot precedenti ma che non compaiono in quelli successivi (ad esempio a causa di refactoring, ecc.) non dovrebbero apparire nell'ultima edizione del codice .
  • nel frattempo, dovrebbe esserci continuità tra file che fa permane tra le istantanee. Vorrei che GIT sapesse che ci sono edizioni precedenti di questi file e non li trattiamo come nuovi file all'interno di ogni edizione.

Alcune informazioni sul mio obiettivo:

  • Ho bisogno di revisionare formalmente questo lavoro piuttosto che conservare copie di istantanee private locali.
  • Ho intenzione di pubblicare questo lavoro come open source, quindi il controllo della versione sarebbe altamente raccomandato
  • Sto valutando alcuni dei più diffusi sistemi di controllo delle versioni (Subversion e GIT), ma io sicuramente ho bisogno di una soluzione funzionante sia in GIT che in subversion. Sono non in cerca di essere persuaso a utilizzare uno strumento particolare, ho bisogno di una soluzione per ogni strumento che sto considerando. (Ho inviato una risposta separatamente per ogni strumento, quindi i campi separati di persone che hanno esperienza in GIT e Subversion saranno in grado di dare risposte focalizzate su uno o l'altro).

La stessa ma separata domanda per Subversion: link

    
posta therobyouknow 05.01.2011 - 12:45
fonte

2 risposte

3

Poiché Git è un < em> content management system , non considera un file come nuovo perché lo aggiungi di nuovo: se ha lo stesso (o quasi lo stesso) contenuto , collegherà la sua cronologia con la versione precedente dello stesso file (o in realtà rileva che è stata rinominata).

L'idea è di:

  • crea un repo git al di fuori di tutte le tue directory.
  • vai in ognuna delle tue directory.
  • git --git-dir=/path/to/git/repo/.git add -A per aggiungere / rimuovere tutti i file da la directory corrente rispetto all'albero di lavoro esterno del tuo repository Git.
    L'idea è di utilizzare ogni contenuto di directory come directory di lavoro di un repository git che è configurato altrove, al di fuori di qualsiasi di quelle directory.
  • git commit -m "a comment"
  • git tag -m "a comment" myTag
risposta data 05.01.2011 - 13:28
fonte
1

Il caso più semplice, posso pensare a ...

  1. Crea una repository / cartella git, copia la prima istantanea nel repository e assegnagli il nome src o qualcosa di adatto.

  2. Successivamente, aggiungi, impegna i file / le cartelle nel repository.

  3. Ora rimuovi la cartella e copia la prossima istantanea al suo posto. (nominandolo come hai fatto l'ultima istantanea.

  4. Ripeti dallo stage 2.

Puoi controllare git status tra ogni istantanea, questo mostrerà tutti i file che considera mancanti, quindi puoi contrassegnarli come rimossi dal repository.

In parole povere ciò farà ciò di cui hai bisogno.

    
risposta data 05.01.2011 - 13:37
fonte

Leggi altre domande sui tag