2017-05-09 1 views

Répondre

-1

Il n'existe aucune garantie qu'une telle validation existe. S'il en existe un, il peut ne pas être unique (il peut y en avoir plus d'un).

Bien sûr, rien ne garantit que quelque chose fonctionne jamais, mais ce n'est pas ce que je veux dire ici. Le principe de conception derrière les sous-modules va dans l'autre sens: le superprojet, "module A" dans votre cas, est considéré comme l'élément de contrôle. Vous extrayez un certain nom de branche de validation de superprojet, ou un nom de tag, ou un ID de hachage brut, ou autre, et dans cette validation, le superprojet contient l'ID de hachage pour un commit particulier dans le sous-module. Par conséquent, pour chaque commit dans le module A (ou chaque commit qui utilise B de toute façon), il y a un hash ID particulier pour B. Supposons pour l'instant qu'il n'y a que trois commits dans A, numérotés A1, A2, et A3, et trois commits dans B, numérotés B1, B2 et B3. Si nous vérifions A1, nous obtenons un numéro de B. Disons que c'est B2. Si nous vérifions A2, nous obtenons un autre numéro B. Disons que c'est encore B2. Enfin, si nous vérifions A3, nous obtenons un autre numéro B ... qui pourrait bien être B2 à nouveau.

Dans ce cas, mettre des « A » commits qui correspondent à engage B1 et B3 sont à la fois vide, et l'ensemble des « A » commits correspondant à B2 a cardinalité 3. Pour certains B engage, il no Un commit, et pour les autres validations B, il n'y a pas unique Un commit.

Cela est généralement vrai de l'utilisation du sous-module, donc donné quelques B commettre hachage, il est impossible de trouver le correspondant A commettras. Vous pouvez, cependant, regarder à travers un certain nombre de A commits et trouver leurs correspondants B hashes. Ce sont les entrées gitlink dans l'arbre pour le commit voir How can I get a git submodule's associated commit ID from a past commit in the parent clone? (notez la réponse basée sur git rev-parse, qui est le chemin à parcourir si vous connaissez le chemin spécifique au gitlink du sous-module). Si vous faites une table complète de tous les mappages A-> B, il sera facile d'inverser la table et de trouver l'ensemble des valeurs A pour une valeur donnée B, et donc si l'ensemble est vide.

+0

Pas une réponse à mon problème, désolé. Les 4 premiers paragraphes que je connaissais traitaient de la formulation de ma question pour que les gens ne se concentrent pas là-dessus. Le dernier paragraphe résout le problème inverse: donné un commit de A, lequel commit de B? Mais je sais comment faire. Seule la fin fait allusion à ce dont j'ai besoin sans réellement suggérer une méthode pour le faire. – Charles

+0

C'est parce qu'il n'y a pas * une méthode pour le faire! – torek

+0

Hm ok vraiment? Dans tout le git et tous ses clones et extensions et add-ons? D'accord. Ne pouvons-nous pas alors concevoir une chose faite maison où nous boucler à travers toutes les commits de A et filtrer les commits correspondants de B pour celui que je veux, et produire les commits A qui a eu un coup? Même si ce n'est pas le cas, ça va. Je n'ai pas assez de connaissances git bash moi-même. – Charles