34 votes

SVN: Créer un diff pour beaucoup de révisions

J'ai eu une succursale privée que j'ai fait une tonne de s'engage, alors j'ai fusionné dans le tronc, et a fait quelques petites modifications, là.

Maintenant le tronc responsable souhaite un diff de mes modifications au cas où nous avons besoin d'une restauration.

Comment puis-je créer ce? Si vous avez besoin de chiffres pour votre exemple, supposons que

224446

a été ma principale de révision où j'ai fusionné dans le tronc,

224453 et 224462

étaient mes corrections mineures, et j'ai d'innombrables changements lorsque, dans ma branche privé.

Solution (via Martin)

svn diff -r 224452:224453 > ~/tmp/diff.1
svn diff -r 224462:224463 > ~/tmp/diff.2
svn up -r224446
patch < ~/tmp/diff.1 -p0
patch < ~/tmp/diff.2 -p0
svn diff -r 224445 > ~/tmp/changes.patch

Puis mail ~/tmp/modifications.patch pour notre tronc responsable pour la garde.

31voto

Martin v. Löwis Points 61768

Une procédure possible serait de faire ceci:

  1. crée des différences pour 224453 et 224462 (par exemple, en svn diff -r 224452:224453 > diff1.patch ).
  2. départ 224446 ( svn up -r224446 )
  3. appliquer les diffs (par exemple patch -p0 -i diff1.patch )
  4. créer un diff de celui contre 224445 ( svn diff -r 224445 > diff2.patch )

7voto

Jon Skeet Points 692016

Une option serait de créer une branche à 224446, puis les fusionner dans 224453 et 224462. Ensuite, prendre une diff entre qui et 224445 sur le tronc. Qui devraient être toutes les modifications en une seule, et vous pouvez créer un fichier de correctif si vous avez besoin de:

# Branch from your initial checkin
svn cp svn://xyz/trunk@224446 svn://xyz/branches/foo

# Check it out
svn checkout svn://xyz/branches/foo tmp

# Merge in the two changes
svn merge -c 224453,224462 svn://xyz/trunk tmp

# Commit the changes
svn commit tmp -m "Extra commits 224453 and 224462"

# Diff the branch from mainline before original
svn diff svn://xyz/trunk@224445 svn://xyz/branches/foo

C'est en grande partie le même que Martin réponse, juste avec les différentes façons d'appliquer les changements et obtenir les diff. Notez que, bien que dans ce cas, j'ai validé les modifications, vous n'avez pas vraiment à vous pourriez faire svn diff svn://xyz/trunk@224445 tmp au lieu des deux dernières commandes. La bonne chose à propos de l'avoir dans le référentiel est alors quelqu'un peut appliquer la diff dans le sens inverse pour rouler de nouveau, si cela est nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X