Domanda

Ho bisogno solo l'albero dei sorgenti e la sua storia. Non mi interessa per la roba requisiti / problemi per ora. Ho giocato un po 'witth la riga di comando per capire se potessi ottenere un elenco di pacchetti di cambiamento per il tronco e alcuni dei percorsi dev. Ho pensato che dovrebbe essere possibile estrarre un diff per ogni pacchetto sul cambiamento e l'uso che per riprodurre tutti i cambiamenti da quando il primo commit in git. Qualcosa di simile a questo:

  1. ottenere il primo commit e inserirlo a git
  2. avere accanto CP
  3. ottenere diff per CP
  4. applicare diff a git lavorare dir
  5. aggiungi e impegnarsi modifiche a git
  6. ripetere con (2) fino allo scorso CP

Si potrebbe anche pacchetto sul cambiamento repleace con punto di arresto (sarebbe abbastanza buono per me).

Un modo più semplice sarebbe quella di checkout solo un CP e aggiungere / commit a git. Ma poi si sarebbe perdere traccia di aggiungere, rimuovere, spostare e rinominare le operazioni.

Qualcuno sa come ottenere un diff unificato da "si diff"? Questo sarebbe già aiutare molto.

Tutte le idee?

Edit2:
Aggiunta una risposta che mostra come in realtà ho fatto la migrazione ...

È stato utile?

Soluzione

Il problema con MKS Integrity è la loro repository unico in cui tutto risiede:

  • requisiti,
  • piani di test,
  • casi di test,
  • caratteristiche,
  • le attività di sviluppo,
  • le richieste di implementazione

Dal momento che tali dati possono evolvere in modo indipendente gli uni dagli altri, al proprio ritmo, tutti importazione in un unico repository Git sarebbe una cattiva idea: si può solo clone tutti il contenuto di un repository Git ( anche se è possibile limitare la profondità di quel clone).
Ciò significa che si otterrà tutti i documenti, anche se siete solo interessati nel codice.
Un export MKS Integrity implicherebbe per definire primi molti repository Git di agire come sottomoduli .


  

Ho bisogno solo l'albero dei sorgenti e la sua storia.

Come al solito, vorrei solo raccomandare l'importazione:

  • le major (per qualsiasi cosa più vecchio di un anno, o qualsiasi altra cosa periodo ti trovi bene non sarà necessario l'esame per intero perché è così vecchio)
  • tutte le etichette (maggiori e minori) per gli ultimi anni.

E non vorrei importare tutto in una repository Git a meno che non si è sicuri che tutte le sorgenti rappresentano una sistema sviluppato come un tutto (diversi "moduli" e non sviluppati indipendentemente)

  

Un modo più semplice sarebbe quella di checkout solo un CP e aggiungere / commit a git.

Questo sarebbe il modo di procedere.

  

Ma poi si sarebbe perdere traccia di aggiungere, rimuovere, spostare e rinominare le operazioni.

No! Non vorrai! Git sarà inferire quelle operazioni .
Questo è il vantaggio di essere un file contenuti VCS .

Altri suggerimenti

Non riesco a postare il vero programma che ho scritto, perché io non l'ho fatto nel mio tempo libero. Tuttavia, posso postare come ho fatto. Dovrebbe essere facile da rifare con qualsiasi linguaggio di scripting. Lo strumento che ho scritto migrato solo un ramo alla volta. Direi esso quale ramo voglio (per esempio 1.21.1) e l'inizio e la revisione termina nel ramo (ad esempio 4 e 78 sarebbe migrare le revisioni partire da 1.21.1.4 fino a 1.21.1.78). Per avere tutte le filiali in un unico repository vorrei fornire la directory .git da utilizzare per l'importazione in.

  • Inizio ciclo avvio revisione per porre fine revisione
    • CURRENTREV = BRANCH.loopcounter
    • creare la directory repo
    • spostare il .git dir nella directory repo
    • spostare il file nella directory .gitignore repo
    • chdir nella directory repo
    • creare MKS sandbox all'interno dir repo via "si createsandbox -P MKS_PROJECT_PATH --Sì --projectRevision = CURRENTREV
    • recuperare descrizione revisione via "si viewprojecthistory --rfilter = gamma: CURRENTREV-CURRENTREV"!, Uscita cattura
    • utente estratto, la data, l'etichetta (s), commenti uscita precedente
    • "git add".
    • tubo estratto informazioni dall'alto in "git commit -qf -" (non si può fare -m se si vuole più linee come il commento checkpoint)
    • sandbox goccia via "si dropsandbox --Sì index.pj"
    • spostare .git e .gitignore ad un luogo sicuro (per iterazione successiva)
    • eliminare tutti i file rimanenti nella directory sandbox
    • trasferimento a dir genitore (..)
    • eliminare sandbox / repo dir
  • creare dir git finale
  • mossa .git e .gitignore in dir git finale
  • "git resettare HEAD --hard"

Fatto.

MKS usa un qualche tipo di codifica ASCII per la sua corda e git di solito usa UTF-8 in modo da guardare fuori per problemi durante l'importazione dei metadati in Git (nomi utente, commenti, tag, ecc.).

Per ulteriori rami fanno questo:

  • per il controllo finale directory git la revisione in cui il ramo dovrebbe iniziare e creare un ramo ( "git checkout -b NEWBRANCHNAME")
  • Ora spostare .git e .gitignore al luogo salvare e cancellare l'intera dir
  • ora fare la stessa cosa come sopra

Ancora una cosa: "si" è lo strumento da riga di comando MKS. In modo che sia necessario specificare il suo percorso completo o mettere il suo percorso nel percorso di ricerca.

FWIW, si diff diff purtroppo attualmente non supporta unificata. C'è una richiesta di cambiamento di averlo farlo, ma non ci sono ancora stati troppi clienti che chiedono tale funzione.

NOTA BENE:. Io lavoro per PTC (che ha acquisito MKS)

Questo funziona per posti di blocco ...

https://gist.github.com/2369049

Purtroppo, posti di blocco sono apparentemente l'unica cosa che fa davvero alcun senso da MKS -> GIT, come un punto di controllo è davvero la cosa più vicina al "snapshot", che GIT chiama un commit.

MKS ha così tanti concetti incompatibili (per la versione del file di tracciamento, rami che sono niente come rami GIT, posti di blocco, etc.) cui tutti possono evolvere in modo indipendente l'uno dall'altro è davvero difficile dire come migrare una storia sensata in GIT . Probabilmente ci sono molti modi per farlo e nessuno di loro di più "corretto" di quello successivo.

Detto questo, mi piacerebbe sentire qualche buona idea. :)

Mi piacerebbe vedere una soluzione che cattura il controllo delle versioni per file in modo sensato. In alcune discussioni abbiamo gettato intorno all'idea di cercare di allineare MKS versioni per file di tempo commit-o qualcosa del genere. In questo modo siamo in grado di formulare il concetto di "pronti contro termine" evoluzione attraverso un commit, che contiene modifiche in più file.

Io uso questo strumento per importare i pacchetti di cambiamento da MKS in Mercurial, importarlo in git dovrebbe essere abbastanza simile; oppure è possibile importare a Mercurial prima, e utilizzare lo strumento git per importare prossimo Mercurial.

https://github.com/arsane/py-mks2hg.git

Si cercherà di scoprire tutti i pacchetti di modifica che nell'ambito del progetto specificato, e si impegnano a nuovo repository Mercurial in ordine.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top