2008-11-13 7 views
2

Je souhaite valider une grande quantité de fichiers XML qui ont été modifiés. Cependant, dans le répertoire que je veux parcourir récursivement, il y a beaucoup de dossiers/fichiers qui ont été ajoutés localement, je ne veux pas les valider.Subversion: valider uniquement les fichiers modifiés

Existe-t-il un moyen de le faire sur la ligne de commande?

Mise à jour: J'ai inclus les informations de version SVN: svn, la version 1.4.6 (r28521), compilé 11 mars 2008, 08:26:35

post-scriptum Je serais intéressé par les réponses qui incluent comment forcer la validation, par ex. même si les fichiers ont été verrouillés.

+0

J'ai mis à jour ma réponse en fonction de vos changements à la question. J'espère que c'est plus utile maintenant, mais si c'est quelque chose qui arrive souvent, je recommanderais de mettre à jour (au moins les clients) à 1.5 afin que vous puissiez utiliser changeset :) –

Répondre

4

Avez-vous essayé d'utiliser une propriété svn: ignore sur les fichiers/dossiers locaux? Mais sauf si vous les ajoutez svn, ils ne seront pas validés ...

typiquement --force vous permettra de voler le verrou du fichier.

+0

--force m'a donné une erreur, disant qu'il n'était pas reconnu pour le commande svn commit. 'svn help commit' mentionne seulement une option force-log, que je suppose n'est pas ce que je veux. – Grundlefleck

+0

Voir aussi http://stackoverflow.com/a/10226942/892318 comme une approche alternative – domi27

2

EDIT: Je réécris cette réponse en fonction de certaines des informations que vous avez mises à jour dans vos questions. Tout d'abord, pour déverrouiller des fichiers de force, il ne suffit pas simplement de --force la validation. Vous utilisez --force avec la commande de déverrouillage et vous devez l'utiliser sur l'URL exacte que vous souhaitez déverrouiller. Malheureusement, c'est la seule façon de le faire, sauf si vous avez accès au référentiel. Si vous pouvez accéder directement au dépôt, vous pouvez utiliser la commande svnadmin comme indiqué ici:

svnadmin lslocks /path/to/repository 

Cela permet d'afficher les fichiers verrouillés. Pour déverrouiller:

svnadmin rmlocks /path/to/repository /project/path/to/locked/file 

Si vous ne disposez pas d'un accès direct au référentiel, vous supprimez les verrous un à la fois comme ceci:

svn --force unlock svn://url.to.repository/project/path/to/locked/file 

Une fois que vous êtes prêt à vérifier, vous peut lister directement les fichiers que vous voulez enregistrer au lieu de simplement faire le répertoire par défaut. Cela vous permettra de vérifier que dans les fichiers XML modifiés, tout en ignorant les changements de structure des répertoires, des ajouts, ou tout autre chose est que vous ne voulez pas extraire à (ajouté déverrouiller exemple aussi):

svn --force unlock svn;//url.to.repository/project/janes_subdir/jane.xml 
svn ci -m "Whatever Log" foo.xml junk.xml my_subdir/*.xml janes_subdir/jane.xml 
+0

Je n'aurais pas normalement, mais les détenteurs ont emballé et est rentré à la maison pour la nuit. :-) – Grundlefleck

+0

Ah ok, ça a du sens alors :) –

3

Vous n » t spécifiez quelle ligne de commande, assumant ainsi UNIX ou cygwin.

Quelques possibilités:

  1. find . -name '*.xml' -print0 | xargs -0 svn ci
  2. svn status | egrep '^M.*\.xml$' | sed -e 's/^. *//' > tmp.txt && svn ci --targets tmp.txt
  3. svn status > tmp.txt && $EDITOR tmp.txt && sed -e 's/^. *//' < tmp.txt > tmp2.txt && svn ci --targets tmp2.txt

NOTE: Je n'ai pas testé les commandes.

Le premier va valider tous les fichiers XML (y compris ceux que vous avez ajoutés récemment - pas de problème si vous n'avez pas ajouté de nouveaux fichiers xml).

La seconde valide tous les fichiers xml modifiés.

Le troisième vous permettra de modifier la liste des fichiers avant de s'engager.Supprimez simplement toutes les lignes que vous ne voulez pas valider. Vous pourriez être plus à l'aise de faire chaque commande par elle-même plutôt que de les enchaîner tous ensemble comme je l'ai fait (split sur & &). En ce qui concerne le verrouillage, il y avait un autre commentaire qui semblait couvrir la majeure partie de celui-ci.

+0

Cela m'a aidé à résoudre un problème similaire ("ne commettre que des fichiers nouvellement ajoutés"). Merci! Utilitaires de ligne de commande Unix à la rescousse. –

Questions connexes