2015-10-27 3 views
1

У меня есть прочный древовидный объект, и я хочу узнать, каков его путь (относительно корня) и что было идентификатором commit, когда это дерево было написано. Например:Прочный: путь и commit_id дерева

tree = repo.lookup '7892eeee70c08fae4db63aef7000dea39f883b30' #sha/oid of tree 

Какие операции следует выполнять на этом древовидном объекте, чтобы получить его путь и зафиксировать идентификатор?

ответ

1

Эта информация вообще не хранится в дереве. Гит использует деревья Меркле, где родители знают, что такое детские деревья, но каждое дерево может содержаться в нескольких коммитах (это типичная ситуация, так как некоторые субдиры очень редко касаются).

Дерево также может быть доступно через множество разных путей, если эти каталоги имеют одинаковое содержимое.

Единственный способ выяснить, где находится дерево, - это пойти и посмотреть на каждую фиксацию и рекурсивно посмотреть из корня, чтобы узнать, можете ли вы найти дерево, которое вы дали. Это будет очень дорогостоящая операция.

Я бы порекомендовал вам сделать шаг назад и выяснить, почему вы думаете, что вам нужно выяснить, с каким деревом можно добраться. Похоже, вы уже решили много шагов, и вы спрашиваете о деталях, когда вы должны смотреть на него с более высокого уровня.