2009-03-09 6 views

Répondre

8

git et svn sont philosophiquement différents, et pousser/tirer est l'une des principales différences. Bien que je puisse faire valoir que ce que vous proposez est fondamentalement faux (et vous le suggérez même dans votre question), vous pourriez accomplir votre objectif avec des alias et un peu de re-câblage mental.

Ce ne sont pas parfaits, mais pourraient travailler pour vous ou vous donner quelques idées.

#file: .git/config 
# assumes your svn-remote is called svn 
alias.co = git config svn-remote.svn.url > /dev/null && git svn rebase || git pull --rebase 
alias.ci = git config svn-remote.svn.url > /dev/null && git svn dcommit || git push 
2

git est différent de svn. git-svn est une extension permettant aux gens d'utiliser git avec svn.

Une collision est l'action de paiement, quel type de contrôle voulez-vous dire? "svn checkout" ou "git checkout" ou "git svn clone".

Une autre est « commit », locale « git commit », à distance « svn commit »: P

Cela ne veut pas dire, ils ne pouvaient pas essayer de cacher plus des différences, en regardant la config.

+0

Huh? Il n'y a rien de tel que "git svn checkout". Quoi qu'il en soit, je suppose que c'est vrai que l'abstraction serait trop perméable pour être utile. –

2

Pour utiliser workflow standard de Git et les commandes lorsque vous travaillez avec un dépôt Subversion, vous pouvez utiliser SubGit (http://subgit.com/) au lieu de git-svn.

SubGit fonctionne plus vite, ne nécessite pas de garder l'historique linéaire avec "git rebase" et vous permet de pousser et de tirer avec n'importe quel client Git. Clause de non-responsabilité: Je suis un développeur SubGit.

Questions connexes