2009-10-30 4 views
0

Comment puis-je tester si un fichier est identique dans toutes les branches dans lesquelles il existe?
Même pseudocode pour construire un script serait utile.SVN, tester si un fichier est identique dans toutes les branches qu'il contient

Merci.

EDIT: J'ai dû effectuer cette opération sur environ 900 fichiers répartis sur 5 branches. Longue histoire.
Il s'avère que la chose la plus simple à faire était de simplement tout vérifier et d'utiliser des outils de ligne de commande standard pour faire le travail.

Merci à tous pour vos suggestions.

+0

Voici un article sur diffing entre les branches http://www.murrayc.com/blog/permalink/2007/01/25/subversion-diff-between-branches/ –

Répondre

1

Le plus facile (et plus rapide) est de comparer les numéros de révision des fichiers, comme le marquage et ne ramification pas les modifier.

Si vous suivez ce chemin, vous ne vérifiez pas l'identité, mais si le fichier a été modifié dans la branche, ce qui est généralement plus important. Donc, il va signaler une fausse alarme, si quelqu'un commet un fichier dans un fichier et plus tard inverser le fusionner à l'ancienne révision. Pour éviter cela, vous pouvez différencier les fichiers dont la révision ne correspond pas.

Vous pouvez obtenir les numéros de révision de tous les fichiers dans la révision de la tête par

svn ls -vR REPO_URL/path/to/file 

ou bien xml par:

svn ls --xml -R REPO_URL/path/to/file 

Si vous le savez, que le chemin du fichier (par rapport à partir tronc) est unique dans tout le dépôt, vous pouvez utiliser grep pour obtenir tous les fichiers ramifiés:

svn ls -vR REPO_URL/ | grep /path/to/file/without/trunk 

Ensuite, vous avez toutes les infos là-bas et ont juste besoin .. analyse syntaxique (mais svn ls -VR REPO_URL/est vraiment lent)

+0

Je suppose que cela devrait fonctionner si le même fichier a été ajouté dans 2 branches séparément, non? Merci. – z5h

+0

Pas alors cela rapportera une dioférence (comme la révision n'est pas la même) aussi ce n'est généralement pas la bonne façon et la fusion avec svn sera difficile –

+0

Oui, je sais. C'était/est un gâchis. J'ai dû corriger svn avec un diff des développeurs svn pour que svn fusionne les différentes branches sans se bloquer. – z5h

2

Quelque chose comme ce qui suit?

 
foreach(branch in project/branches/*) 
    svn diff project/trunk/relative_path_to_file branch/relative_path_to_file 
Questions connexes