Le scénario est le suivant:
Sur une autre machine (même copie de travail, mais aucune modification):
Comment puis-je faire en sorte que svn diff produise un patch applicable au patch, ou appliquer proprement le patch produit par svn diff dans ce cas? Je ne peux pas m'engager. Je voudrais conserver mergeinfo (car la solution de contournement évidente est d'ajouter le fichier comme totalement nouveau, sans connexion au précédent).
Avec Subversion, vous pouvez spécifier le binaire diff à utiliser et les paramètres à lui transmettre. Voir le manuel sur svn diff.
Vous voudriez produire un fichier correctif régulier à partir d'un diff svn, donc vous voudriez 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 patch.
Si vous souhaitez également vous débarrasser des propriétés svn dans vos correctifs, il existe une option pour cela:
svn diff --patch-compatible > mypatch.diff
svn help diff
dit:
--patch-compatible : generate diff suitable for generic third-party
patch tools; currently the same as
--show-copies-as-adds --ignore-properties
Les correctifs créés de cette façon sont censés être compatibles avec le bon ancien utilitaire plain patch
.
Avez-vous essayé le --show-copies-as-adds
option mentionnée sur la page Web svn diff et décrite sur la ( options svn page ?.