Où puis-je trouver des ressources «SVN pour les utilisateurs de Git»? [fermé]

18

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?

agent154
la source
3
En bref: a) il n'y a pas d'index, b) svn up = git pull, c) svn commit = git commit && git push d) les branches sont émulées par des répertoires ... ;-)
johannes
1
Je ne sais pas comment je pourrais rendre cela plus sur le sujet ...
agent154
5
En aucune façon. Presque tout est hors sujet sur P.SE.
JensG
@ agent154 ne nous demandez pas d'être un moteur de recherche de source ouverte pour vous. Identifiez le problème que vous rencontrez - le problème n'est pas "où puis-je trouver des choses sur svn" c'est "j'essaie de faire quelque chose et je ne peux pas comprendre comment le faire". Si ce quelque chose est spécifique à la commande 'svn' et que vous travaillez sur la façon de l'écrire, demandez sur Stack Overflow. Si ce quelque chose concerne le flux de travail et l'organisation de svn (quand se connecter, quand fusionner, comment travailler avec d'autres développeurs) - alors posez-le ici.
2
Je pense que le problème identifié est un manque de ressources, même un peu à distance et facilement disponibles pour comprendre SVN en tant qu'utilisateur Git. Franchement, je trouverais une discussion sur ce super utile après avoir parcouru plusieurs pages de résultats Google / DuckDuckGo ne trouvant rien d'autre que ce que l'OP a mentionné.
Métagraphe

Réponses:

8

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:

  • commit = pousser vers le référentiel central. Il n'y a ni rebase ni commit local, pas de pulls non plus.
  • la ramification se fait par répertoire. Mieux vaut considérer l'ensemble du référentiel comme une structure de répertoires, la ramification est comme créer un lien symbolique avec une sémantique de copie sur écriture. Alors que dans git, vous branchez l'ensemble du référentiel et basculez entre eux de sorte que la nouvelle branche `` superpose '' votre copie de travail, avec SVN, vous pouvez échanger des morceaux de votre référentiel. Généralement, les gens se branchent sur un dossier de niveau supérieur (généralement appelé branches), donc la commutation devient beaucoup plus semblable au style de travail de `` superposition '' de git.

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.

gbjbaanb
la source
Dépend. La fusion avec SVN devient mauvaise, lorsque des fichiers ont été déplacés (qui sont essentiellement une forme instruite de suppression + ajout gérée par SVN lui-même) par quelqu'un ET modifiés par quelqu'un d'autre. A part ça, belle réponse.
JensG
1
J'ai mentionné le problème de conflit d'arbre ... Un tel état est un problème pour d'autres scms, bien que je comprenne que git utilise une heuristique pour détecter si le fichier déplacé est le même, il peut toujours se tromper si les changements sont importants ( par exemple, le fichier étant divisé en 2).
gbjbaanb
Git n'a pas besoin d'heuristique pour détecter les changements d'arborescence - il a besoin de l'utilisateur pour déplacer le fichier git mv. SVN l'a fait svn 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 ...
Idan Arye
3
@IdanArye git mvest 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?")
Izkata
3

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 rebasequi rebase vos modifications locales sur le tronc de subversion, puis git svn dcommitqui 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).

wirrbel
la source