J'ai donc pris un travail où l'entreprise utilise SVN (mais déménagera à Git dans le futur). Le problème est que je ne connais pas SVN. J'ai essayé de nombreuses requêtes Google et tout ce que je peux trouver, ce sont des tutoriels SVN-> Git, "Pourquoi Git est-il meilleur que SVN", et une "feuille de triche" particulière qui donne (quelques) commandes comparables ...
À moins de lire le livre d'O'Reilly sur SVN, quelles sont les instructions brèves (mais pas trop brèves) à SVN pour les utilisateurs de Git?
Réponses:
La référence canonique est le Redbook de Subversion . Indépendamment de vos compétences passées, lisez ceci à partir de frais et vous obtiendrez toutes les informations d'utilisation dont vous avez besoin. Ce n'est pas difficile ou complètement étranger, la plupart des gens disent que SVN est beaucoup plus facile à comprendre que git, donc vous devriez être bien avec juste un peu de lecture des commandes principales. Le chapitre d'utilisation de base devrait vous permettre d'être opérationnel sans problème.
Il y a 2 différences principales:
La ramification est triviale, la fusion est loin d'être aussi mauvaise que les apologistes DVCS veulent le faire comprendre, surtout si vous vous en tenez au trio "standard" de dossiers de premier niveau (appelés tronc, branches et balises).
Il y a quelques bits dans lesquels SVN bat git, des répertoires clairsemés viennent à l'esprit - où vous ne récupérez qu'une partie de votre dépôt. Lorsque vous avez besoin de plus de pièces, vous ne mettez à jour que ce dont vous avez besoin. Si vous avez un énorme référentiel (par exemple, un produit de base et des charges de plugins), c'est génial.
Il y a quelques bits qui ne sont pas aussi bons que git, le conflit d'arbre redouté vient à l'esprit - où vous avez un conflit au niveau du répertoire (c'est-à-dire que quelqu'un a supprimé un fichier que vous avez modifié)
Si vous êtes sous Windows, utilisez TortoiseSVN. Ça bouge beaucoup.
la source
git mv
. SVN l'a faitsvn move
, mais comme le branchement et la fusion dans SVN est une sorte de hack, je ne pense pas qu'il puisse résoudre automatiquement les conflits d'arbre comme git le fait ...git mv
est implémenté comme add + remove. git utilise l'heuristique pour déterminer si un déplacement ou une copie a eu lieu pendant un commit (je pense que la valeur par défaut est "80% + du fichier est-il le même?")Utilisez git svn si possible. J'ai été dans votre situation et après six mois de frustration, je suis passé à git svn et je suis heureux depuis.
Git svn vous permet d'utiliser le référentiel localement et de valider le serveur SVN est ensuite géré par un
git svn rebase
qui rebase vos modifications locales sur le tronc de subversion, puisgit svn dcommit
qui valide les validations rebasées .Peut-être que ce n'est pas optimal pour une utilisation avancée de Subversion, mais puisque vous utilisez git localement, tout va bien.
Lorsque vous utilisez git clone, vous ne devez pas cloner le dossier racine de subversion mais votre répertoire cible directement (clone
trunk
). Cela accélérera l'exécution de git, sinon votre copie de travail peut devenir énorme.Avis de non - responsabilité : je ne sais pas comment est la situation lorsque vous souhaitez créer des branches Subversion, etc. Les équipes avec lesquelles j'ai travaillé n'utilisaient pas de branches (juste moi des branches git locales).
la source