Question

J'ai des modifications locales apportées à un projet open source qui utilise Subversion comme contrôle source. (Je n'ai pas d'accès de validation sur le référentiel de projet d'origine.)

Ma modification ajoute un fichier, mais ce fichier n'est pas inclus dans la sortie de "svn diff". (Il peut être intéressant de noter que le nouveau fichier est un fichier binaire, pas un texte brut.)

Comment puis-je créer un correctif qui inclut les nouveaux fichiers?

 $ svn st
   A      tests/foo.zip
 $ svn diff
 $
Était-ce utile?

La solution

Je crains que votre fichier ne soit binaire, c’est précisément pourquoi il ne s’affiche pas. La commande diff de Subversion ne traite que les diffs / patches textuels (même si Subversion peut gérer en interne les différences de fichiers binaires de manière efficace entre les versions).

Autres conseils

J'ai eu un comportement similaire à celui de Pozsar. Et sa réponse a fonctionné pour moi mieux que le svn diff --force normal. Toutefois, si vous utilisez une machine DOS (par exemple, via Cygwin), vous devrez peut-être modifier légèrement sa réponse. Le correctif diff + suivant fonctionnait pour corriger mes fichiers texte + binaires dans Cygwin en utilisant l'argument --binary:

svn diff --force --diff-cmd /usr/bin/diff -x "-au --binary" OLD-URL NEW-URL > mybinarydiff.diff

patch -p0 --binary -i mybinarydiff.diff

Il existe une option --force dans la commande diff, mais elle produit un fichier de correctif incorrect pour les fichiers binaires sur ma machine. Son utilisation avec l'option --diff-cmd fonctionne pour moi cependant:

svn diff --force --diff-cmd /usr/bin/diff -x -au

Je pense que cela produit exactement ce que vous vouliez.

Si vous construisez un correctif, vous voudrez peut-être utiliser le bon vieux 'diff' avec l'option --new-file qui traite le fichier manquant comme vide.

Notez que la syntaxe de cette option peut en réalité varier en fonction de la version de votre ancien vieux diff que vous utilisez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top