2010-06-22 11 views
4

Je travaille sur des crochets de dépôt SVN. Voici la structure typique du référentiel:Comment distinguer un commit ordinaire et fusionner dans Subversion?

trunk/ 
branches/ 
    branch1/ 
    branch2/ 

En pre-commit hook je dois détecter si la fusion (entre les branches, de branche en tronc ou vice-versa) a été effectuée et vérifier si l'utilisateur est autorisé à effectuer une fusion.

J'ai découvert que la fusion modifie la propriété 'svn: mergeinfo' du répertoire de destination. Donc, je dois analyser le commit changeset, détecter la modification de propriété du dir et vérifier si la propriété 'svn: mergeinfo' a changé depuis la dernière validation.

Tout cela semble trop compliqué. Existe-t-il un moyen plus pratique de détecter la fusion?

+0

Vous ne pouvez pas faire la distinction entre les commandes "svn commit" et "svn merge" dans le pré-commit? –

+0

Non. 'Svn merge' n'effectue même pas de commit. 'svn commit' devrait être appelé séparément. – Dmitry

Répondre

2

Il me semble que la détection d'une modification de la propriété svn: mergeinfo est à peu près la seule façon de la distinguer. Bien sûr, vous devez également vous assurer que vos validations ne proviennent pas de clients pré-v1.5 qui ne créent pas mergeinfo.

+0

C'est la seule façon que j'ai trouvé aussi! – sholsapp