9
votes

Comment diffuser uniquement les fichiers source?

J'ai deux arbres de code source presque similaires, mais n'ont pas accès au référentiel de code source, donc je suis bloqué avec des packages de libération contenant également des rapports de test, une documentation, des binaires, etc.

the DIFF ne prend en charge que - exclure , mais je voudrais faire quelque chose comme diff -wbur -include = '*. C, *. .h 'Tree1 Tree2

Je sais que Cette question est quelque peu liée, mais ne répond pas vraiment à mon problème.

points bonus pour ignorer des blocs de changement complètement dans c Commentaires :)


0 commentaires

5 Réponses :


16
votes

peu de modification à un résultat de Google aidé, dans Tree1 a fait . -Name '*. [CH]' -EXEC DIFF -WIBU {} ../ Tree2 / {} \;


1 commentaires

Pour les arbres source C ++, essayez -Name '* .h "-o -name" * .cpppp " dans la commande ci-dessus.



4
votes

Voici un petit script de fabricant de correctifs: xxx


0 commentaires

3
votes

J'exclureais tout ce qui ne correspond pas à .c ou .h. Donc, cela signifie qu'il n'inclut que les fichiers .C et .h: xxx

pour moi c'est la meilleure façon de le faire car vous n'utilisez que DIFF


1 commentaires

Cela ne fonctionne pas correctement: il comprend des extensions telles que .CPP, .hxx, .cache et .help.



0
votes

J'ai proposé une solution plus facile que de trouver des mainteneurs diff, voici le fil: http://lists.gnu.org/archive/html /bug-diffutils/2014-10/msg00000.html

L'idée est de fournir une nouvelle option qui indique à DIFF d'analyser les fichiers correspondant à une regex, comme: DIFF -NURP --Only "*. [HC]" Source / Source-Nouveau /

Voici les instructions pour patcher Diffutils

clone le repo git clone git: //git.savannah.gnu.org/diffutils.git

exécuter bootstrap.sh dans le répertoire diffutils et résolvez les dépendances jusqu'à ce qu'elle crée le script ./cofigure

Téléchargez le patch du lien ci-dessus

appliquer git appliquer

Configurer et compiler ./ configure faire

Ceci créera la diffamation DIFF dans SRC / DIFF

acclamations


1 commentaires

J'ai ajouté le patch qui résout mon problème. Semble maintenant être une bonne réponse pour moi :)



2
votes

Vous pouvez écrire tous les fichiers pour exclure dans un fichier temporaire et le donner à l'argument -x code> de DIFF.

diff -wbur tree1 tree2 \
  -X <(find tree1 tree2 -type f -not -name '*.java' -and -not -name '*.sql')


0 commentaires