155 votes

examiner l’histoire du fichier supprimé

Si je supprime un fichier dans Subversion, comment je peux regarder à son histoire et le contenu ? Si j’essaie de faire ou sur un fichier qui n’existe pas, il se plaint que le fichier n’existe pas.

Aussi, si j’ai voulu ressusciter le fichier, devrais je viens `` TI retour ?

(J’ai demandé spécifiquement au sujet de Subversion, mais je voudrais aussi connaître comment Git, Mercurial et Bazaar gérer ce cas, trop).

146voto

Bert Huijben Points 13856

Lorsque vous voulez regarder les anciens fichiers, vous devriez vraiment savoir la différence entre:

svn cat http://server/svn/project/file -r 1234

et

svn cat http://server/svn/project/file@1234

La première version regarde le chemin d'accès est maintenant disponible en http://server/svn/project/file et copie ce fichier tel qu'il était en révision 1234. (Cette syntaxe n'est pas le travail après une suppression de fichier).

La deuxième syntaxe obtient le fichier qui a été disponible que http://server/svn/project/file dans la révision 1234. Donc, cette syntaxe NE travailler sur des fichiers supprimés.

Vous pouvez même combiner ces méthodes pour récupérer un fichier qui a été disponible en révision 2345 comme http://server/svn/project/file mais avec le contenu tel qu'il avait, en 1234, avec:

svn cat http://server/svn/project/file@2345 -r 1234

92voto

mjy Points 1768

Tout d’abord, trouver le numéro de révision où le fichier a été supprimé :

Puis recherchez dans log.txt (pas un SVN gourou, donc je ne sais pas mieux) une ligne avec

et voir quelle révision qui a été. Puis, comme dans les autres réponses, ressusciter le fichier à l’aide de la révision précédente.

80voto

Stefan Points 29091

Pour obtenir le journal d’un fichier supprimé, utilisez

Si vous voulez ressusciter le fichier et conserver sa version historique, utilisez

Si vous voulez juste le contenu du fichier mais non versionné (par exemple, pour une inspection rapide), utilisez

En tout cas, ne pas utiliser « svn » vers le haut pour récupérer un fichier supprimé !

27voto

Dustin Points 35205

C'est rien de particulier dans git. Si vous connaissez le nom du fichier, vous pouvez trouver le changement qui l'a enlevée avec le journal:

git log -n 1 -- filename

Ensuite, vous pouvez l'utiliser à engager pour obtenir le fichier tel qu'il existait avant la suppression.

git checkout [last_revision]^ filename

Exemple:

dhcp-120:/tmp/slosh 587% ls -l slosh.tac
ls: slosh.tac: No such file or directory
dhcp-120:/tmp/slosh 588% git log -n 1 -- slosh.tac
commit 8d4a1f1a94e4aa37c1cb9d329a140d08eec1b587
Author: Dustin Sallings <dustin@spy.net>
Date:   Mon Dec 15 11:25:00 2008 -0800

    Get rid of a .conf and replace it with .tac.
dhcp-120:/tmp/slosh 589% git checkout 8d4a1f^ slosh.tac
dhcp-120:/tmp/slosh 590% ll slosh.tac
-rw-------  1 dustin  wheel  822 Dec 30 12:52 slosh.tac

Notez que ce n'est pas réellement placez le fichier dans le contrôle de révision. Il n'a qu'à insérer le fichier tel qu'il existait dans son état final dans l'emplacement actuel. Vous pouvez ensuite l'ajouter ou tout simplement l'inspecter ou que ce soit à partir de ce point.

16voto

Mark Foreman Points 616

Une solution en utilisant uniquement l'interface graphique:

Si vous connaissez le nom du fichier, mais ne sais pas son dernier numéro de révision ou même son chemin:

  1. À partir de l'explorateur de dépôt faire "Afficher l'historique" sur la racine
  2. Appuyez sur "Show All" (au bas de la boîte de dialogue de journal)
  3. Tapez le nom de fichier dans la zone de texte Filtre (en haut de la boîte de dialogue de journal)

Ce sera ensuite afficher uniquement les révisions où le fichier a été ajouté/modifié/supprimé. C'est votre histoire de le fichier.

Notez que si le fichier a été supprimé par la suppression de l'un de ses dossiers parents, il n'aura pas un 'deleted' entrée dans le journal (et donc mjy la solution ne fonctionnera pas). Dans ce cas, sa plus récente entrée dans le filtrée journal correspondent à son contenu à la suppression.

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:

X