183 votes

Comment puis-je "svn add" tous les fichiers non versionnés au SVN ?

Je cherche une bonne façon de "svn add" automatiquement tous les fichiers non versionnés dans une copie de travail à mon dépôt SVN.

J'ai un serveur en direct qui peut créer quelques fichiers qui devraient être sous contrôle de la source. Je voudrais avoir un court script que je peux exécuter pour ajouter automatiquement ceux-ci, au lieu de passer par là et de les ajouter un par un.

Mon serveur fonctionne Windows Server 2003 donc une solution Unix ne fonctionnera pas.

1 votes

@Saul Cette question est clairement antérieure à celle que vous avez mise en lien, je ne vois donc pas comment elle pourrait être dupliquée. C'est plutôt l'autre question qui fait double emploi.

0 votes

Cygwin est une option. Il vous donne la puissance de bash sur n'importe quel environnement Windows. Je l'utilise depuis plus de 10 ans avec des problèmes très mineurs.

354voto

Ronan Points 1921

svn add --force * --auto-props --parents --depth infinity -q

Bon conseil ! Une remarque : mon Eclipse ajoute automatiquement les nouveaux fichiers à la liste des fichiers à ignorer. Il s'agit peut-être d'une question de configuration, mais quoi qu'il en soit : il y a l'application --no-ignore option qui aide.

Après cela, vous pouvez vous engager :

svn commit -m 'Adding a file'

14 votes

Un bon conseil. Bien mieux que d'utiliser svn status. "svn add --force" semble être suffisant.

0 votes

Notez qu'il ne semble pas ajouter les fichiers dot (en 1.7.9 au moins).

1 votes

Existe-t-il un moyen simple de définir une macro abrégée (comme on peut le faire avec git) ? En outre, serait-il possible de mettre à jour cette réponse afin d'expliquer chaque élément ?

72voto

Sam Saffron Points 56236

C'est une autre question à la mienne mais il y a une réponse qui correspond à cette question :

svn status | grep '?' | sed 's/^.* /svn add /' | bash

8 votes

Cela utilise des outils UNIX (grep, sed, bash) que le PO a dit ne pas avoir.

3 votes

Vous pouvez aussi trouver sed et grep sous Windows si vous le voulez vraiment.

1 votes

Désolé pour l'upvote sur le commentaire de cygwin, ce n'était pas intentionnel (et je ne peux pas l'annuler). En fait, je pense que Cygwin est aussi laid qu'on peut l'être sous Windows. Vous pouvez toujours utiliser findstr au lieu de grep qui fonctionnera au moins depuis Windows 2000 sans installer quoi que ce soit d'autre.

42voto

Neutrino Points 1261

Ce qui marche, c'est ça :

c:\work\repo1>svn add . --force

Ajoute le contenu des sous-répertoires.

N'ajoute pas les fichiers ignorés.

Liste les fichiers qui ont été ajoutés.

Le point dans la commande indique le répertoire courant, il peut être remplacé par un nom de répertoire ou un chemin spécifique si vous voulez ajouter un répertoire différent du répertoire courant.

0 votes

En fait, ça devrait être .\* ou si svn Root est sur un répertoire différent stuff\svn_root\* .

0 votes

Je ne suis pas. Les commandes de SVN s'exécutent dans le contexte du chemin à partir duquel elles sont exécutées, c'est normal. "svn add .\*" seul ne fait pas de récursion et affiche un tas de spam d'avertissement rendant impossible de voir ce qui a été réellement ajouté. "svn add .\* --force" effectue une récursion mais affiche également "svn : Skipping argument : E200025 : '. \.svn ' se termine par un nom réservé". Cela semble donc pire que ma solution initiale.

0 votes

Je soulignais que vous n'avez probablement pas tout le lecteur C sur le SVN ;-), et que vous devriez donc ajouter un chemin. Et d'après mes tests, en spécifiant le chemin comme stuff\svn_root n'ajoute pas les fichiers dans les sous-répertoires (par exemple dans stuff\svn_root\already_in_svn\not_in_svn.txt ). D'où l'étoile à la fin.

35voto

lepe Points 8959

Cela a marché pour moi :

svn add `svn status . | grep "^?" | awk '{print $2}'`

( Fuente )

Comme vous avez déjà résolu votre problème pour Windows, il s'agit d'une solution UNIX (en suivant Sam). Je l'ai ajoutée ici car je pense qu'elle est encore utile pour ceux qui arrivent à cette question en demandant la même chose (car le titre ne comporte pas le mot clé "Windows").

Note (février 2015) : Comme commenté par "bdrx", la commande ci-dessus pourrait être simplifiée de la manière suivante :

 svn add `svn status . | awk '/^[?]/{print $2}'`

1 votes

Sympathique, compact, concis, se prête aussi très bien à l'extension. Merci.

1 votes

Super. Il est également facile d'étendre, de modifier, de supprimer, etc.

0 votes

Parfait pour ce dont j'avais besoin. Je vous remercie !

4voto

John Meagher Points 6734

TortoiseSVN a cette capacité intégrée, si vous êtes prêt à utiliser une solution non-commandée. Il suffit de faire un clic droit sur le dossier de premier niveau et de sélectionner Ajouter ...

0 votes

Avec un référentiel énorme, TortoiseSVN se bloque. Cela m'a fait chercher des alternatives en ligne de commande :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X