2009-06-24 7 views
5

La documentation dit: "Parce que git-cherry compare le changeset plutôt que l'identifiant de commit (sha1), vous pouvez utiliser git-cherry pour savoir si un commit a été fait localement a été appliqué sous un ID de validation différent. "git cherry confusion - ne fonctionne pas comme décrit dans doc

Voyons voir:

$ git cherry master release-1.1.0 | head -1 
- 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
$ git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
... 
(cherry picked from commit 409c61b3304373a73c787fdf9c08cc338934b74d) 
... 

git show montre la même pour changeset 409c .. et 533e

$ git br --contains 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 
release-1.1.0 
$ git br --contains 409c61b3304373a73c787fdf9c08cc338934b74d 
master 
release-1.0.4 

Cela signifie que le changeset est à la fois maître et relâchez-1.1.0. Alors comment ça se fait que Git Cherry montre 533e ..?

Répondre

3

Il indique également "Les commits sont comparés à leur ID de patch, obtenu à partir du programme git-patch-id.". Quand appliqué votre diff cherry-choisi, est-ce que peut-être finir par être un diff légèrement différent?

Dans ce cas non seulement l'identifiant de validation différera, mais aussi l'identifiant du correctif puisque git-patch-id rapportera différents identifiants de correctifs pour les commits et ainsi ils ne seront pas considérés dans leurs branches respectives .

Il est facile de vérifier cela:

git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 | git-patch-id 
git show 409c61b3304373a73c787fdf9c08cc338934b74d | git-patch-id 

Si le premier SHA1 retourné par git-patch-id diffère entre les deux pistes, c'est-ce qui est arrivé.

Lecteur d'avertissement - Je n'ai pas essayé ma théorie, mais c'est ainsi que j'interprète les pages de manuel.

+1

Je n'ai pas git-patch-id dans mon chemin, mais 'git patch-id' fonctionne. –

Questions connexes