web-dev-qa-db-fra.com

SVN Valider des fichiers spécifiques

Est-il possible de ne commettre qu'une liste de fichiers spécifiques (par exemple, un seul de la liste de fichiers que SVN veut valider).

Je travaille sur MAC OS X sous Terminal, sans aucune interface utilisateur.

208
0100110010101

Sûr. Il suffit de lister les fichiers:

$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png

Je ne suis pas au courant d'un moyen de lui dire d'ignorer un certain ensemble de fichiers. Bien sûr, si les fichiers que vous souhaitez valider sont facilement listés par le shell, vous pouvez les utiliser:

$ svn ci -m "No longer sets printer on fire" printer-driver/*.c

Vous pouvez également demander à la commande svn de lire la liste des fichiers à valider à partir d'un fichier:

$ svn ci -m "Now works" --targets fix4711.txt
320
unwind

Utilisez les listes de modifications. L'avantage par rapport à la spécification de fichiers est que vous pouvez visualiser et confirmer que tout ce que vous vouliez est réellement inclus avant de valider.

$ svn changelist fix-issue-237 foo.c 
Path 'foo.c' is now a member of changelist 'fix-issue-237'.

Cela fait, svn maintient maintenant les choses séparées pour vous. Cela aide lorsque vous jonglez avec plusieurs changements

$ svn status
A       bar.c
A       baz.c

--- Changelist 'fix-issue-237':
A       foo.c

Enfin, dites-lui de commettre ce que vous vouliez changer.

$ svn commit --changelist fix-issue-237 -m "Issue 237"
62
jcwenger

Vous mettez essentiellement les fichiers que vous voulez commettre sur la ligne de commande

svn ci file1 file2 dir1/file3
38
Wienczny

En raison de mon état de Subversion, je devais faire preuve de créativité. svn st affiche les états M, A et ~. Je voulais seulement M et A alors ...

svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt

Cette commande dit rechercher toutes les lignes générées par svn st qui commencent par M ou A, coupées à l'aide du séparateur d'espaces, puis obtenir les colonnes 8 à la fin. Dump que dans le fichier filters.txt et écraser.

Puis modifiez target.txt pour élaguer davantage la liste de fichiers. Ensuite, lancez ci-dessous pour vous engager:

svn ci -m "My commit message" --targets targets.txt

Ce n'est probablement pas le cas d'utilisation le plus courant, mais j'espère que cela aidera quelqu'un.

22
Eric

Outre la liste explicite des fichiers comme indiqué par dérouler et Wienczny , vous pouvez configurer des listes de modifications et les archiver. Celles-ci vous permettent de gérer des ensembles de modifications isolés sur la même copie de travail.

Vous pouvez en savoir plus à ce sujet dans le version en ligne de l'excellent livre SVN .

10
sbi

essayez ce script ..

#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`; 
     do LIST="${LIST} $f $NULL on"; 
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
7
Abhijit Dhariya

Je crée un (sous) dossier nommé "hide", déplace le fichier que je ne pas veux commettre dessus. Ensuite, faites mon commit en ignorant les plaintes concernant le fichier manquant. Puis déplacez le fichier caché de cache en ./

Je ne connais aucun inconvénient à cette tactique.

1
George Wyche