2016-10-24 1 views
1

Est-ce que quelqu'un peut partager un fragment de code qui montre comment je peux sélectionner les validations sur une seule branche en utilisant l'API JGit.Besoin de trouver des validations sur une branche spécifique

Si j'utilise RevWalk, j'obtiens l'arbre entier, y compris les sous-branches qui ont été fusionnées dans la branche spécifiée.

Comment puis-je obtenir juste les validations sur la branche spécifiée sans prendre en compte les validations parentes des branches qui ont pu être fusionnées dans la branche spécifiée?

Ce qui peut également aider est de savoir à quelle branche un certain commit est assis.


Ajout d'un peu plus d'informations:

enter image description here

Comment puis-je obtenir tous les commits le long de la branche se développer? donc basée sur l'image ci-dessus, j'ai besoin SHAs:

2a34

B468

785C

mais pas:

731a

CBDB

Merci!

+0

Je pense, ce que vous demandez n'est pas possible dans Git Quelle (s) commande (s) Git utiliseriez-vous pour accomplir ceci? –

+0

Ne connais pas de commande dans l'API de porcelaine. Je me demandais s'il y avait une API jGit qui pourrait aider. Que diriez-vous de la deuxième question: Comment puis-je savoir la ou les branches sur lesquelles un certain commit est en cours? Y a-t-il une API pour ça? –

+0

Bonjour, @PankajTandon. Avez-vous réussi à résoudre ce problème? – kolobok

Répondre

0

Afin de traverser l'histoire d'un dépôt Git, à partir d'une certaine branche, vous pouvez utiliser le LogCommand comme décrit ici: JGit: How to get all commits of a branch? (Without changes to the working directory ...)

méthode addFilter() de la commande peut être utilisée pour installer un RevFilter pour exclure certains commits .

+0

Merci Rudiger. Cependant, la commande nameRev ne retourne pas le nom de la branche. Au lieu de cela, il renvoie la référence précédente avec un ~ ajouté à la fin. Ainsi, par exemple, si la branche est appelée develop, la carte renvoyée par nameRev retourne develop ~ 1 sur le commit * second * sur cette branche (la première commit retourne 'develop' correctement). Ceci, en quelque sorte, met le kibosh sur l'approche que je prenais, celle de trouver tous les commits le long d'une branche. Je joins une photo ci-dessous pour que je puisse clarifier la question. Des idées? Merci! –