64 votes

Comment faire en sorte que svn diff produise un fichier que le correctif appliquerait, lorsque svn cp ou svn mv était utilisé?

Le scénario est:

  1. svn cp et mv certains fichier
  2. modifier ce fichier
  3. svn diff > mypatch

Sur une autre machine (même de la copie de travail, mais pas de changements):

  1. Essayez d'appliquer mypatch.
  2. Fail -> essaie de modifier unexistant fichier.

Comment puis-je faire de svn diff produire de patch (patch, ou proprement appliquez le patch produite par svn diff dans ce cas? Je ne peux pas m'engager. Je voudrais préserver mergeinfo (à cause de l'évidente solution de contournement consiste à ajouter le fichier comme totalement nouveau, sans connexion à la précédente).

63voto

Ray Points 1317

Avec subversion, vous pouvez spécifier le diff binaire à utiliser et les paramètres à lui transmettre. Voir le manuel sur svn diff.

Vous voudriez produire un fichier de correctif régulier à partir d'un svn diff, vous voudriez donc que le diff svn ressemble à un diff normal. Essaye ça:

 svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch
 

Preuve de concept:

 echo "newline" >> README.txt
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
cp README.txt README.txt.patched
svn revert README.txt
patch -p0 < mypatch
diff README.txt README.txt.patched
 

Aucune différence dans les deux fichiers après le correctif.

5voto

Adrian Pronk Points 5810

Avez-vous essayé l'option --show-copies-as-adds mentionnée sur la page web svn diff et décrite sur la page d' options svn ?.

-1voto

Toby Jackson Points 474

Sans comprendre le scénario spécifique que vous essayez de travailler sur sa difficile à identifier pourquoi vous voulez le faire. J'ai le sentiment que vous essayez de faire des changements contrôlés dans un environnement isolé de manière à ne pas perturber les autres utilisateurs/applications.

Pourriez-vous résoudre ce problème;

  • Créer une branche pour votre changement de code
  • Effectuez votre copier/déplacer et modifications sur la branche
  • Obtenir de l'autre partie pour passer à ce nouveau code de la branche et de porter sur le partage de cette branche

Lorsque vous avez tous les deux d'accord sur les changements de fusion de retour dans le tronc à l'aide de l' --réintégrer l'argumentation et de rm de la branche?

Ce serait * Maintenir fusion-info * Identifier les copier/déplacer et les changements dans le contrôle de version * Toujours isoler les modifications des autres utilisateurs * Prévenir incomplète des changements au cours de l'étape 2 d'être un problème, car vous pouvez simplement ajouter plus de changements et de mise à jour

-1voto

maksim Points 396

Allez-y et essayez patch original -i original.patch . Je n'ai jamais eu de problèmes à utiliser patch avec des correctifs produits par svn diff .

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: