¿Cómo puedo encontrar la primera confirmación de una rama con JGit?

TheCrafter:

Quiero encontrar el primer comprometerse a una rama específica, utilizando la biblioteca JGit de Eclipse. Por ejemplo, si tengo

master -- a -- c -- d -- e
          \
  feature  b -- f -- g -- h
            \
    another  j -- k -- l

// findBranchRoot() is the magic method we want to create
repository.resolve("feature").findBranchRoot().getId(); // this would return b
repository.resolve("another").findBranchRoot().getId(); // this would return j

¿Alguien sabe cómo hacer eso?

jthill:

El problema que va a tener es que -y oso conmigo, aquí-commits no son "en" ramas. Para ver esto, considere el gráfico que dibujó. Es ambiguo. Inevitablemente así. Tu dibujaste

A---C---D---E          master
 \
  B---F---G---H        feature
   \
    J---k---L          another

y simplemente no hay manera de determinar si Bfue hecho "sobre" featureo another(o, para el caso, cuál de los tres A, fue hecho "en").

A---C---D---E          master
 \
  B---J---K---L        another
   \
    F---G---H          feature

muestra exactamente la misma historia. Todo está en la forma que elija para interpretarlo.

Si quiere amarrar una confirmación de algún registro administrativo externo, poner un marcador en el mensaje de confirmación, que va a hacer, pero en Git sí mismo (y para el trabajo real) es la estructura de la historia que importa, no la forma en partes de él se hace referencia en este repo o aquello.

Si llega el momento de publicar featureo another, vas a cometer necesidad de presionar Bde cualquier manera, a menos que ya se ha empujado como parte de algún otro trabajo. Asuntos ascendencia. Nombres de rama no lo hacen.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=313158&siteId=1
Recomendado
Clasificación