2010-12-08 7 views
0

J'essaye actuellement de choisir une caractéristique du tronc d'un projet OSS dans une fourchette. Les deux dépôts utilisent git et j'ai le tronc importé dans la fourche comme une branche donc ça devrait rendre les choses belles et faciles.git-log avec une clause "OU" - ou - comment fusionner les sorties git-log?

L'approche que je prends est d'essayer de sélectionner tous les commits pertinents d'une branche à l'autre car il n'est pas possible pour moi de faire une simple fusion: il y a trop de choses qui ont divergé.

Afin de générer la liste des commits que je devrais commencer avec pour écrémer j'ai identifié deux git-log commandes à exécuter:

git log --branch project-trunk **/*Foo* 

Ceci a pour but de me donner le journal pour un fichier avec le le mot "Foo" dedans dans la branche project-trunk. C'est un très bon point de départ, mais j'ai trouvé qu'il y a d'autres commits qui sont pertinents: heureusement, ils ont généralement un travail d'identification dans le journal de validation. Donc, pour trouver ces J'utilise:

git log --branch project-trunk --grep Bar 

Cela me donne des journaux sur la branche project-trunk qui contiennent le travail « Bar ». Le problème est que j'ai vraiment besoin d'une liste principale, ordonnée chronologiquement contenant l'union de ces deux commandes. J'ai lu le manuel git rev-list mais je ne vois pas comment faire ce que je veux.

Est-il possible de réunir deux conditions séparées comme celle-ci? Et sinon, y a-t-il un moyen simple d'unir la sortie de deux commandes git-log par ordre chronologique?

Répondre

0

J'obtenu impatient et avec un peu plus à jouer autour je suis venu avec ce qui suit, qui semble fonctionner:

(git rev-list --grep=Bar heads/project-trunk; git rev-list heads/project-trunk **/*Foo*) | git log --stdin --no-walk --reverse 

Si quelqu'un peut améliorer du tout faites le moi savoir! J'espère que cela aidera quelqu'un d'autre dans le futur ...

Questions connexes