2010-12-02 9 views
97

J'ai essayé de commettre plusieurs fichiers à travers des répertoires différents en un seul coup comme ci-dessous,SVN- Comment commettre plusieurs fichiers en un seul coup

svn commit –m”log msg” mydir/dir1/file1.c mydir/dir2/myfile1.h mydir/dir3/myfile3.c etc etc 

Depuis, je voulais exclure certains fichiers de la liste afin de commettre J'ai placé chaque nom de fichier dans la ligne de commande comme ci-dessus. Je l'ai mis dans le bloc-notes et il y a eu environ 25 fichiers. Lorsque je le copie et le colle sur la ligne de commande, les derniers fichiers sont manquants et je suppose que cela peut être une limitation de la ligne de commande (?). Y at-il une option que je peux augmenter la longueur du tampon?

Y at-il une option que je peux mettre tous les fichiers dans un fichier texte et le donner en argument à svn commit?

+6

@Thi - Ceux qui n'utilisent pas une interface graphique pour la subversion sont masochistes. Obtenez Tortoise SVN ou son équivalent Linux. – tpow

+1

S'il y a une restriction sur la longueur du tampon, il ne sera pas dans SVN, il sera dans n'importe quel shell que vous utilisez. –

+20

@cinquTimo: vous préférerez peut-être utiliser une interface graphique pour tout. D'autres personnes ne le font pas. –

Répondre

146

Vous pouvez utiliser un svn changelist pour garder trace d'un ensemble de fichiers que vous voulez valider ensemble.

La page liée va dans beaucoup de détails, mais voici un exemple de résumé:

$ svn changelist my-changelist mydir/dir1/file1.c mydir/dir2/myfile1.h 
$ svn changelist my-changelist mydir/dir3/myfile3.c etc. 
... (add all the files you want to commit together at your own rate) 
$ svn commit -m"log msg" --changelist my-changelist 
3

Utilisez un ensemble de modifications. Vous pouvez ajouter autant de fichiers que vous le souhaitez à l'ensemble de modifications, d'un coup ou de plusieurs commandes; puis engagez-les tous en une seule fois.

+0

'" changeset ": commande inconnue' – Daniel

+1

http://svnbook.red-bean.com/fr/1.6/svn.advanced.changelists.html - Le mot-clé svn est" changelist ", qui est adressé dans la première réponse et le plus upvoted. –

28

Vous pouvez utiliser l'option --targets ARG où ARG est le nom de fichier texte contenant les cibles pour commettre.

svn ci --targets myfiles.txt -m "another commit" 
+0

Fonctionne pour moi dans cette commande bash: 'trouver. -name \ * mon.mask | xargs svn ci -m "message" --targets -' – ASten

24

J'ai eu aucun problème quelques fichiers commis comme ceci:

svn commit fileDir1/ fileDir2/ -m "updated!" 
+0

Cela ne fonctionne pas pour moi. Obtenir l'erreur "svn: '/' n'est pas une copie de travail". Ici, j'ai posté ma question, vous pouvez regarder. http://askubuntu.com/questions/442742/how-to-update-dir-on-svn-server/442751?noredirect=1#442751 –

+2

Oui, ça fonctionne parfaitement! –

+0

Oui travaillé bien. Aussi dans mon document racine je pourrais commettre toutes les modifications dans l'arborescence de copie de travail avec ceci: > svn commit. -m 'message de validation de masse' – GrigoreasP

Questions connexes