11
votes

svn diff pour un fichier complet?

donné: un référentiel SVN, un bin à l'intérieur de celui-ci et un script.pl à l'intérieur de cette bac . Il y a quelques révisions, bin et script.pl a été ajouté au référentiel dans un commit. Depuis lors, certaines révisions ont été appliquées à script.pl .

nécessaire: une commande diffiffive qui retournerait une difforme diff pour script.pl de zéro à la tête, c'est-à-dire une diff avec toutes les lignes ajoutées.

arrière-plan: Ce diff est nécessaire pour la révision du code, pour l'alimentation à Reviewoard

problème: svn diff avec -r x: tête ( x étant la première révision de script.pl ) produit une difforme entre la première version et la tête tandis que -r x-1: tête DIT-moi le fichier script.pl est inconnu dans La révision x-1 , qui est réellement correcte. Cependant, je ne trouve pas de solution appropriée qui inclurait le diff d'un fichier vide. Je ne peux pas non plus différer le répertoire bin , car il a été ajouté dans le même COMMIT que script.pl

solution: ?


2 commentaires

Doit être une seule commande «Svn Diff», ou pouvez-vous script autour de cela?


"Svn blâme" serait-il quelque chose que vous recherchez? Cela vous montrera lorsque cette ligne exacte a été ajoutée au fichier.


8 Réponses :


-3
votes

du haut de ma tête: xxx

Le nom de fichier n'est pas une clé unique au fil du temps, mais le nom de fichier @ révision est.


1 commentaires

Semblait prometteurs, mais tristement: SVN: Impossible de trouver l'emplacement du référentiel pour script.pl dans la révision X-1



0
votes

Attendez, vous voulez un diff entre la version actuelle (tête) de script.pl et le fichier vide? Vous n'avez pas besoin de diff em> pour cela, car le diff serait simplement toutes les lignes du script actuel.pl avec des plusses devant eux. Passionnant, non?

Si vous en avez vraiment besoin dans Diff em> forme, pourquoi pas juste faire cela? P>

$ touch EMPTYFILE  # creates a new, empty file
$ diff -u EMPTYFILE script.pl > script.pl.diff


2 commentaires

Placons-la de cette façon: toucher et diffusion est un hack. Faire ces choses avec Subversion Pure était l'intention réelle de la question - surtout parce que j'aimerais utiliser un révisions qui se diffère en utilisant Subversion. Je me demandais pourquoi la subversion est incapable de produire une différence appropriée et supposé que je suis stupide, mais il s'avère que c'est subversion et pas moi qui est un peu sous-titré :) Mais merci de toute façon, je pourrais peut-être pirater quelque chose ensemble.


En outre, un autre problème avec ceci est que les mots-clés de substitution SVN (par exemple DATE $ DATE $, $ REVISION $, $ ID $, etc.) seront étendus dans la copie de travail, que vous ne voulez pas dans une diff. "SVN DIFF" n'élargise pas ces mots-clés et c'est le comportement que vous voulez.



0
votes

J'ai fait face au même problème et je n'ai pas non plus trouvé de solution.

La solution de contournement consistait à produire du diff d'un couple de révisions récentes du fichier, puis "Développer les modifications" vous montre le fichier complet et permet de commenter n'importe où.


0 commentaires

0
votes

Subversion ne fera pas exactement ce que vous voulez. Le mieux que vous puissiez faire est une diff de l'annuaire de niveau le plus bas existant lorsque bin / script.pl a été commis (probablement, bin sent).


0 commentaires

6
votes

sans fichier temporaire: xxx


2 commentaires

Pourquoi ne pas utiliser / dev / null ? avec diff -u / dev / null script.pl ?


Mots-clés de substitution SVN (par exemple $ DATE $, $ Révision $, $ ID $, etc.) sera étendu à la copie de travail, alors que "svn diff" n'élargit pas ces mots-clés. Ce n'est donc pas le même



0
votes

Un peu un piratage mais devriez vous aider à aller ...

commettez tout xxx

rm -rf ce répertoire et SVN UP Retour.


0 commentaires

1
votes

Ceci est le hack que j'utilise dans cette situation:

cp file1 file2
svn add file2
svn diff file2 > file1.diff
svn rm --force file2


0 commentaires

2
votes

Certaines versions de SVN semble vous laisser faire svn diff -r 0: tête fichier.txt , mais certains ne le font pas. Pour ceux qui ne le font pas, utilisez ce qui suit: xxx

Tous deux de ces travaux pour tout dossier / fichier / fichiers!


0 commentaires