web-dev-qa-db-fra.com

Reprise du clone git-svn

J'ai commencé à cloner un référentiel SVN en utilisant l'opération de clonage de git-svn. Après environ 6 heures d'importation (c'est un gros dépôt), mon ordinateur est allé dormir sur moi. Existe-t-il un moyen de reprendre l'opération sans refaire tout le travail initial?

111
Brandon Yarbrough

Le git svn fetch commande pour reprendre un git svn clone est confirmé par plusieurs sources:

(Par ailleurs, si au cours de l'étape de clonage initiale, votre connexion s'éteint ou si vous devez l'arrêter, pour reprendre le clone, il vous suffit d'exécuter la commande ci-dessus pour reprendre le téléchargement de l'historique).

Il semble y avoir une fuite de mémoire dans git-svn. La taille du git-svn le processus a progressé lentement et après environ deux semaines, il était à 1,2 Go de taille résidente, à ce moment-là, le système d'exploitation a refusé de le laisser bifurquer.
Le fait est que c'était une bénédiction déguisée.
J'ai pu reprendre le clone interrompu avec un simple "git svn fetch ", et il a fonctionné beaucoup plus rapidement avec le tas désormais plus petit.
Cela a si bien fonctionné, en fait, que j'ai pris l'habitude d'interrompre et de redémarrer le processus chaque soir et chaque matin. Quelques jours plus tard, c'était fait.

Vous commencez vos aventures avec git-svn en clonant un référentiel Subversion existant:

git svn clone url://path/to/repo -s

Le -s flag suppose que votre référentiel utilise la convention "trunk, branches, tags". Sinon, vous devez spécifier manuellement les répertoires qui représentent les branches et les balises, si vous voulez que Git les connaisse.

Cela prendra beaucoup de temps, car il récupérera chaque révision unique de SVN et sera validé localement. Si, pour une raison quelconque, il s'arrête, vous pouvez reprendre avec git svn fetch.

146
VonC

J'ai trouvé n article de blog qui a fourni (j'espère) une réponse correcte.

Apparemment, exécutant git svn fetch termine efficacement l'opération de clonage. En espérant!

15
Brandon Yarbrough

Comme VonC, CaptainAwesomePants et Archi ont tous dit git svn fetch fait l'affaire. Je faisais un git svn clone url... --authors-file=path/to/file et le clone a échoué car l'un des auteurs ne figurait pas dans le fichier des auteurs. J'ai ajouté l'auteur au fichier et j'ai exécuté git svn fetch et il a continué là où il s'était arrêté et en regardant le journal git plus tard, il semble qu'il ait utilisé l'auteur nouvellement ajouté pour remplacer le nom de l'auteur de la validation, donc tout était doux.

5
Tom Saleeba

Depuis au moins git 2.1.0, vous pouvez reprendre en rééditant simplement git svn clone

Cependant, cela dupliquera certaines entrées dans votre .git/config supprimez-les et tout ira bien

4
zan-xhipe