Utiliser TortoiseSVN via la ligne de commande

254

Je veux utiliser les options SVN en ligne de commande. J'utilise TortoiseSVN, et j'exécute plusieurs commandes et j'obtiens l'erreur suivante.

'svn' n'est pas reconnu comme une commande interne ou externe

J'ai utilisé la commande

svn checkout [-N] [--ignore-externals] [-r rev] URL PATH

Je pense que je devrais ajouter une variable d'environnement ou autre chose.

Que dois-je faire ou ne peut-on pas utiliser TortoiseSVN à partir de la ligne de commande?

Marcheur de nuit
la source
4
Je suggère la subversion de slik . Et après l'installation, ajoutez simplement son répertoire bin à votre chemin. -bhups
bhups
3
TortoiseSVN est probablement le client SVN Windows GUI le plus utilisé et il est bien documenté. Je ne l'appellerais pas pseudo-client simplement parce que ce n'est pas l'implémentation de ligne de commande de référence.
Joey
18
La dernière version de TortoiseSVN (1.7.1 de cette écriture) a une option lors de l'installation pour les outils de ligne de commande. Il n'est pas activé par défaut mais il installera les fichiers de ligne de commande standard pour svn. Il n'est donc plus nécessaire d'installer un package de subversion distinct comme Silk.
vee
1
Juste un petit info, si vous utilisez Slik svn et vous obtenez cette erreur: "'svn' n'est pas reconnu ..." vous devrez peut-être ouvrir la boîte de dialogue Propriétés système. Bien que Slik ajoute la bonne entrée à votre variable Path, vous devrez peut-être cliquer sur modifier et sur «ok» (même si vous n'avez apporté aucune modification) pour activer la variable. C'est du moins mon expérience avec Windows Vista. Après cela, Windows a reconnu le changement dans le chemin d'accès et ma commande svn a été reconnue.
Jesse
1
J'ai ajouté le chemin SlikSvn / bin à la variable d'environnement mais j'obtiens toujours cette erreur ...
Lion789

Réponses:

464

Par défaut, TortoiseSVN est toujours associé à une interface graphique (GUI). Mais sur le programme d'installation (de la version 1.7 et versions ultérieures), vous pouvez sélectionner l'option "outils client de ligne de commande" pour pouvoir appeler les commandes svn (comme svn commit et svn update) à partir de la ligne de commande.

Voici une capture d'écran de l'option "outils client en ligne de commande" dans le programme d'installation, vous devez vous assurer de la sélectionner:

Comment-installer-TortoiseSvn-CommandLineTools

AnneTheAgile
la source
52
Personnellement, je préfère cette réponse à la réponse acceptée: pas d'installations secondaires et un accès complet à la ligne de commande SVN standard.
Haroldo_OK
2
A également l'avantage supplémentaire que les versions de l'outil de ligne de commande restent synchronisées avec la version TortoiseSVN.
the_mandrill
4
... ce qui signifie plus en détail: le format du répertoire de travail de Subversion a changé plusieurs fois, par exemple dans les versions 1.7 et 1.8. Un client 1.7 n'utilisera un ancien répertoire de travail que s'il est svn upgraded; après cela, un client 1.6 ne pourra plus l'utiliser.
Tobias
38
Comme conseil, si Tortoise est déjà installé, il n'est pas nécessaire de réinstaller. Vous pouvez simplement ouvrir le fichier .msi du programme d'installation d'origine, et au lieu de choisir "Désinstaller", vous pouvez choisir "Modifier". Il mettra simplement à jour votre installation Tortoise actuelle sans rien gâcher.
Trevor
5
Comme conseil, si vous avez déjà installé Tortoise et n'avez pas le fichier .msi - vous pouvez aller dans le Panneau de configuration -> Programmes et fonctionnalités, puis sélectionnez TortoiseSVN -> Modifier.
zvi
131

TortoiseSVN possède une interface de ligne de commande qui peut être utilisée pour l'automatisation GUI TortoiseSVN et elle est différente de celle de Subversion normale.

Vous pouvez trouver des informations sur les options de ligne de commande de TortoiseSVN dans la documentation: Annexe D. Automatisation de TortoiseSVN . Le programme principal avec lequel travailler ici est TortoiseProc.exe.

Mais une note à peu près en haut dit déjà:

N'oubliez pas que TortoiseSVN est un client GUI, et ce guide d'automatisation vous montre comment faire apparaître les boîtes de dialogue TortoiseSVN pour collecter les entrées utilisateur. Si vous souhaitez écrire un script qui ne nécessite aucune entrée, vous devez utiliser le client de ligne de commande Subversion officiel à la place.

Une autre option serait d'installer les binaires Subversion. Slik SVN est une belle version (et ne nécessite pas d'enregistrement comme Collabnet). Les versions récentes de TortoiseSVN incluent également le client de ligne de commande si vous choisissez de l'installer.

Joey
la source
2
Juste pour ajouter à cela - assurez-vous que la tortue est sur votre chemin. Sinon, rien ne fonctionnera.
Thomas Owens
2
Sur la base de cette réponse, je pense que le meilleur pari serait d'installer le client de ligne de commande SVN réel plutôt que d'apprendre une deuxième interface de ligne de commande. Mais je ne sais pas comment faire ça.
jprete
2
Thomas: Par défaut, TortoiseSVN et Slik SVN modifieront le chemin en conséquence.
Joey
23
Cette solution est tout simplement obsolète, le programme d'installation de TortosieSVN inclut désormais les outils de ligne de commande.
Josh
1
Vous devrez peut-être redémarrer après l'installation afin d'obtenir la modification de votre variable d'environnement PATH.
Oliver Bock
91

Si vous avez déjà installé l'interface graphique de TortoiseSVN et que vous vous demandez comment mettre à niveau vers les outils de ligne de commande, voici les étapes ...

  1. Allez dans Panneau de configuration Windows → Programme et fonctionnalités (Windows 7+)
  2. Localisez TortoiseSVN et cliquez dessus.
  3. Sélectionnez "Modifier" parmi les options disponibles.
  4. Référez-vous à cette image pour d'autres étapes.

    Activation de la ligne de commande TortoiseSVN

  5. Une fois les outils client de ligne de commande terminés, ouvrez une invite de commande et tapez svn helppour vérifier l'installation réussie.

Devendra Vaja
la source
Votre réponse n'était pas déjà formatée. Et il contenait des informations indésirables. Il a correctement formaté et édité votre réponse. Veuillez lire le centre d'aide pour en savoir plus. ;)
Lucky
Win10 est "Applications et fonctionnalités" .. mais c'est probablement évident
mince
Ok, ne me croyez pas. Veuillez poser cette question sous forme de méta si la modification est légitime ou non. Il a non seulement formaté votre réponse, mais il a également supprimé les informations indésirables qui ne sont pas requises pour la réponse. Cela s'appelle la modération. Et les personnes avec de hauts représentants nettoient généralement le site en modérant et en contribuant, c'est pourquoi je vous ai suggéré de consulter le centre d'aide. Mais vous voulez juste discuter au lieu d'acquérir des connaissances. Bonne
chance
Oui, en fait, je souhaite partager les connaissances et ne pas revendiquer le travail et la prédication de quelqu'un. Je ne suis pas non plus un adepte aveugle des hauts représentants.
Devendra Vaja
tandis que nous activons la ligne de commande, il demande le chemin de l'application qui est requis pour le téléchargement. chemin: osdn.net/projects/tortoisesvn/storage/1.12.0/Application/…
Amit Joshi
27

Pour utiliser la prise en charge des commandes, vous devez suivre ces étapes:

  1. Définissez le chemin dans les variables d'environnement:

    • ouvrez « Propriétés système »;
    • sur l'onglet ' Avancé ' cliquez sur le bouton ' Variables d'environnement '
    • dans la section ' Variables système ' sélectionnez l'option ' Chemin ' et cliquez sur ' éditer '
    • ajoutez la valeur de la variable avec le chemin d'accès au fichier TortoiseProc.exe , par exemple:

      C: \ Program Files \ TortoiseSVN \ bin

  2. Puisque vous avez enregistré TortoiseProc , vous pouvez l'utiliser conformément à la documentation TortoiseSVN .

    Exemples:

    TortoiseProc.exe / commande: commit /path:"c:\svn_wc\file1.txt*c:\svn_wc\file2.txt "/ logmsg:" test log message "/ closeonend: 0

    TortoiseProc.exe / commande: mise à jour / chemin: "c: \ svn_wc \" / closeonend: 0

    TortoiseProc.exe / commande: log /path:"c:\svn_wc\file1.txt "/ startrev: 50 / endrev: 60 / closeonend: 0

PS Pour utiliser un nom convivial comme «svn» au lieu de «TortoiseProc», placez le fichier «svn.bat» dans le répertoire «TortoiseProc.exe». Il y a un exemple de svn.bat:

TortoiseProc.exe %1 %2 %3
démoniste
la source
Le problème principal n'est pas le nom de l'exécutable (et comment le trouver) mais la syntaxe totalement différente de la ligne de commande; voir ma réponse qui parle de mon tsvnprogramme (qui n'existait pas au moment de la réponse de Warlock). Les versions récentes de Windows permettent de spécifier tous les arguments comme %*(au lieu de %1 %2 %3...).
Tobias
10

Pour activer svn, exécutez à nouveau le programme d'installation de TortoiseSVN, sélectionnez "Modifier" (permet aux utilisateurs de modifier la façon dont les fonctionnalités sont installées) et installez "les outils client de ligne de commande".

Kiki
la source
pour ceux d'entre vous qui se demandent où est l'option "Modifier" - essayez de réinstaller Tortoise SVN
maya
@maya Si vous l'avez déjà installé, n'essayez pas de le désinstaller et de le réinstaller. Allez à la Control Panel\Programs\Programs and Featuresrecherche Tortoise SVN et cliquez sur Changepuis cliquez sur Modify.
Lucky
9

Ma solution a été d'utiliser DOSKEY pour configurer des alias pour les commandes que j'utilise le plus:

DOSKEY svc=TortoiseProc.exe /command:commit /path:.
DOSKEY svu=TortoiseProc.exe /command:update /path:.
DOSKEY svl=TortoiseProc.exe /command:log /path:.
DOSKEY svd=TortoiseProc.exe /command:diff /path:$*

Google "doskey persist" pour des conseils sur la façon de configurer un fichier .cmd qui s'exécute chaque fois que vous ouvrez l'invite de commande comme un fichier. * Rc sous Unix.

SeanH
la source
Génial! C'est la seule réponse qui invoque réellement TortoiseSVN, pas ordinaire svn, à partir de la ligne de commande.
Warlike Chimpanzee
4

Vous pouvez avoir à la fois TortoiseSVN et les outils de ligne de commande Apache Subversion installés. J'installe généralement les outils Apache SVN à partir du site de téléchargement VisualSVN: https://www.visualsvn.com/downloads/

Une fois installé, placez Subversion \ bin dans votre PATH défini. Ensuite, vous pourrez utiliser TortoiseSVN lorsque vous souhaitez utiliser l'interface graphique et vous disposez des outils de ligne de commande SVN appropriés à utiliser à partir de la ligne de commande.

David
la source
3

Il y a une confusion qui pousse de nombreux utilisateurs de TortoiseSVN à utiliser les mauvais outils de ligne de commande lorsqu'ils recherchaient réellement un svn.execlient de ligne de commande.

Que dois-je faire ou ne peut-on pas utiliser TortoiseSVN à partir de la ligne de commande?

svn.exe

Si vous souhaitez exécuter des commandes Subversion à partir de l'invite de commandes, vous devez exécuter le svn.execlient de ligne de commande. TortoiseSVN 1.6.x et les versions antérieures n'incluaient pas d'outils de ligne de commande SVN, contrairement aux versions modernes.

Si vous souhaitez obtenir des outils de ligne de commande SVN sans avoir à installer TortoiseSVN, consultez la page des distributions binaires SVN ou téléchargez simplement la dernière version à partir de la page de téléchargement de VisualSVN .

Si des outils de ligne de commande SVN sont installés sur votre système, mais que l'erreur persiste 'svn' is not recognized as an internal or external command, vous devez vérifier %PATH%la variable d'environnement. %PATH%doit inclure le chemin du répertoire des outils SVN, par exemple C:\Program Files (x86)\VisualSVN\bin.

TortoiseProc.exe

En dehors de cela svn.exe, TortoiseSVN est livré avec TortoiseProc.exequi peut être appelé à partir de l'invite de commande. Dans la plupart des cas, vous n'avez pas besoin d'utiliser cet outil, car il ne doit être utilisé que pour l'automatisation de l'interface graphique. TortoiseProc.exene remplace pas le client de ligne de commande SVN.

bahrep
la source
2

Comme l'a souligné Joey, TortoiseSVN a sa propre syntaxe de ligne de commande. Malheureusement, c'est assez moche, si vous êtes habitué aux svncommandes, et il ignore le répertoire de travail actuel, donc il n'est pas très utilisable - sauf pour les scripts.

J'ai créé un petit programme Python ( tsvn) qui imite la svnsyntaxe de la ligne de commande aussi près que possible et appelle TortoiseSVN en conséquence. Ainsi, la différence entre appeler les outils de ligne de commande normaux et appeler TortoiseSVN est réduite au tdébut à une petite lettre .

Mon tsvnprogramme n'est pas encore terminé mais déjà utile. Il peut être trouvé dans la fromagerie ( https://pypi.python.org/pypi/tsvn/ )

Tobias
la source
Pour ceux qui ne connaissent pas Python: vous avez besoin d'un interpréteur Python 2.x récent. Si vous avez easy_installou pip install, spécifiez simplement tsvn; sinon, vous pouvez télécharger et extraire l'archive tar et exécuter le setup.pyscript d'installation contenu . Puisqu'il est interprété, vous pouvez l'inspecter en détail ;-)
Tobias
2

Après un certain temps, j'ai utilisé cette solution de contournement ...

(dans le fichier .bat)

SET "CHECKOUT=http://yoururl.url";
SET "PATH=your_folder_path"

start "C:\Program Files\TortoiseSVN\bin" svn.exe checkout %CHECKOUT% %PATH%
jorgesimoes
la source
2

Mon correctif pour obtenir les commandes SVN était de copier les fichiers .exe et .dll du répertoire TortoiseSVN et de les coller dans le dossier system32.

Vous pouvez également exécuter la commande à partir du répertoire TortoiseSVN et ajouter le chemin du répertoire de travail à chaque commande. Par exemple:

C:\Program Files\TortoiseSVN\bin> svn st -v C:\checkout

L'ajout du bac au chemin devrait le faire fonctionner sans dupliquer les fichiers, mais cela n'a pas fonctionné pour moi.

KC an EE
la source
Cette approche ne fonctionne pas, montre toujours'svn' is not recognized as an internal or external command
Suraj M
0

Après avoir sélectionné "Outils de ligne de commande SVN", cela deviendra comme ceci:

Entrez la description de l'image ici

Alvin567
la source
5
C'est le résultat souhaité, mais cette réponse ne dit pas comment y parvenir.
BogdanBiv