Je recherche un bon moyen de "svn ajouter" automatiquement tous les fichiers non versionnés dans une copie de travail à mon référentiel SVN.
J'ai un serveur live qui peut créer quelques fichiers qui devraient être sous contrôle de source. J'aimerais avoir un court script que je puisse exécuter pour les ajouter automatiquement, au lieu de les parcourir et de les ajouter un à la fois.
Mon serveur exécute Windows Server 2003, donc une solution Unix ne fonctionnera pas.
svn
command-line
windows-server-2003
JerSchneid
la source
la source
Réponses:
svn add --force * --auto-props --parents --depth infinity -q
Bon conseil! Une remarque: mon Eclipse ajoute automatiquement de nouveaux fichiers à la liste des ignorés. C'est peut-être une question de configuration, mais de toute façon: il y a l'
--no-ignore
option qui aide.Après cela, vous pouvez vous engager:
la source
alias magic="svn add --force * --auto-props --parents --depth infinity -q"
- Expliqué:svn help add
*
à la fin, sinon cela ne fonctionnerait pas (au bail pour moi)C'est une question différente de la mienne, mais il y a une réponse qui appartient à cette question:
la source
Ce qui fonctionne, c'est ceci:
Ajoute le contenu des sous-répertoires.
N'ajoute pas de fichiers ignorés.
Répertorie les fichiers ajoutés.
Le point dans la commande indique le répertoire actuel, il peut être remplacé par un nom de répertoire ou un chemin spécifique si vous souhaitez ajouter un répertoire différent de celui actuel.
la source
.\*
ou si svn root est sur un répertoire différentstuff\svn_root\*
.stuff\svn_root
n'ajoute pas de fichiers dans les sous-répertoires (par exemple dansstuff\svn_root\already_in_svn\not_in_svn.txt
). D'où l'étoile à la fin.Cela a fonctionné pour moi:
( Source )
Comme vous avez déjà résolu votre problème pour Windows, il s'agit d'une solution UNIX (à la suite de Sam). J'ai ajouté ici car je pense que c'est toujours utile pour ceux qui atteignent cette question en demandant la même chose (car le titre n'inclut pas le mot-clé "WINDOWS").
Remarque (février 2015): Comme commenté par "bdrx", la commande ci-dessus pourrait être simplifiée de cette manière:
la source
awk '/^[?]/{print $2}'
; Pas besoin du processus grep supplémentaire.Cela ajoutera tout fichier non versionné dans le répertoire courant et tous les répertoires enfants versionnés.
la source
Cette méthode doit gérer les noms de fichiers contenant n'importe quel nombre / combinaison d'espaces ...
Voici une explication de ce que fait cette commande:
Utilisez l'argument -i de xargs pour gérer la possibilité d'importer des noms de fichiers avec des espaces dans 'svn add' - en gros, -i définit {} à utiliser comme espace réservé afin que nous puissions mettre les caractères "autour du nom de fichier utilisé par 'svn ajouter'.
Un avantage de cette méthode est qu'elle devrait gérer les noms de fichiers avec des espaces.
la source
TortoiseSVN a cette capacité intégrée, si vous êtes prêt à utiliser une solution sans ligne de commande. Faites un clic droit sur le dossier de niveau supérieur et sélectionnez Ajouter ...
la source
C'est comme documenté sur le livre svn et le plus simple et fonctionne parfaitement pour moi
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.add.html
la source
Utilisation:
la source
svn status | cut -d ? -f 2 -s | xargs svn add
J'utilise toujours:
Copier coller
la source
Puisque ce message est étiqueté Windows, j'ai pensé trouver une solution pour Windows. Je voulais automatiser le processus et j'ai créé un fichier chauve-souris. J'ai résisté à la création d'un console.exe en C #.
Je voulais ajouter des fichiers ou des dossiers qui ne sont pas ajoutés dans mon référentiel lorsque je commence le processus de validation.
Le problème avec beaucoup de réponses est qu'elles listeront les fichiers non versionnés qui devraient être ignorés selon ma liste d'ignorés dans TortoiseSVN .
Voici mon paramètre de crochet et mon fichier de commandes qui fait cela
Script de crochet de tortue:
svnadd.bat
la source
Dans cette implémentation, vous aurez des problèmes dans le cas où vos dossiers / noms de fichiers ont plus d'un espace comme ci-dessous:
ces cas sont couverts par de simples:
la source
Si vous utilisez Linux ou utilisez Cygwin ou MinGW dans Windows, vous pouvez utiliser des solutions de type bash comme les suivantes. Contrairement à d'autres similaires présentés ici, celui-ci prend en compte les espaces de noms de fichiers:
la source
Après avoir passé un certain temps à essayer de comprendre comment ajouter de manière récursive uniquement certains des fichiers, j'ai pensé qu'il serait valide de partager ce qui a fonctionné pour moi:
Voici quelques explications.
La première commande ajoute tous les répertoires. La deuxième commande n'ajoute que les fichiers en fonction des modèles spécifiés.
Laissez-moi vous donner plus de détails:
Dans la deuxième commande, les seules différences sont la commande dir et la commande svn, je pense que c'est assez clair.
la source
Vous pouvez utiliser la commande
ou
Si vos fichiers / répertoires ne s'ajoutent pas de manière récursive. Alors vérifiez ceci.
L'ajout récursif est la propriété par défaut . Vous pouvez voir dans le livre SVN .
Le problème peut se trouver dans votre liste d'ignorés ou dans les propriétés globales.
J'ai une solution Google issue Tracker
Vérifiez les propriétés globales pour ignorer l'étoile (*)
TortoiseSVN > Properties
.svn:global-ignores with a value of *
star(*)
il ignorera l'ajout récursif. Supprimez donc cette propriété.Vérifiez le modèle d'ignorer global pour ignorer l'étoile (*)
TortoiseSVN > Settings > General
.star(*)
, supprimez cette propriété.Ce gars a également expliqué pourquoi cette propriété a été ajoutée à mon projet.
La façon la plus similaire d'y parvenir est que quelqu'un a cliqué avec le bouton droit sur un fichier sans extension et sélectionné TortoiseSVN -> SVN Ignorer -> * (récursivement), puis l'a validé.
la source
Vous pouvez saisir la commande suivante sous Linux:
la source
Depuis qu'il a spécifié Windows, où awk et sed ne sont pas standard:
ou dans un fichier batch:
la source
C'est le moyen paresseux et dangereux de synchroniser un répertoire avec SVN, y compris de nouveaux fichiers:
Bien que cela puisse fonctionner à la rigueur, cela peut également avoir de graves conséquences. Par exemple, SVN perdra souvent la trace de l'historique d'un fichier.
La manière idéale de synchroniser un répertoire serait de pouvoir effectuer un diff puis d'utiliser svn patch, mais cela s'écarte des formats de la commande diff et la commande svn diff comparera les différences de répertoire de travail plutôt que les différences au niveau du système de fichiers.
la source
Je pense avoir fait quelque chose de similaire avec:
mais je ne sais pas si ma mémoire est correcte ;-p
la source