Можно ли использовать GIT для идентификаторов, подобных UUID?

Мне нужно создать уникальные «неизменяемые» идентификаторы для фрагментов кода в моем репозитории, которые охватывают все версии данного объекта/фрагмента кода. Цель состоит в том, чтобы, если кто-то пришлет фрагмент кода, я мог быстро сопоставить его с объектом, используя sha1 кода (если он или его предыдущая версия находится в репозитории отправителей). Оттуда я могу использовать этот уникальный идентификатор для извлечения метаданных о фрагменте кода.

sha1 в git кажутся отправной точкой для создания UUID (версия 5), и можно выполнить поиск в репозитории git, начиная с sha1, а затем пройти по дереву, чтобы найти исходный sha1 файла, когда он был впервые зафиксирован. Имеет ли смысл использовать этот номер для уникального идентификатора фрагмента кода во всех его ревизиях?


person fortyfoxes    schedule 17.01.2011    source источник


Ответы (1)


Я не уверен, что правильно понял проблему, но если ваши «фрагменты кода» всегда находятся в отдельных файлах, ваш изложенный подход может сработать, если вы решите эти две проблемы:

  1. Вам нужно будет убедиться, что никогда не происходит «разветвления», то есть кусок никогда не расходится на два разных куска. В противном случае оба фрагмента получат один и тот же UUID, что вам, вероятно, не нужно.

  2. Помните, что SHA1 по своей природе чувствителен к незначительным изменениям вводимых данных, включая дополнительные новые строки и т. д., поэтому вы должны быть осторожны при создании хэша для поиска в базе данных Git.

person Gintautas Miliauskas    schedule 17.01.2011
comment
Спасибо за ответ. Да, каждый фрагмент кода будет в своем собственном файле. Ветвление / разветвление на самом деле то, что я думаю, что хочу разрешить. Например, разные ветки могут представлять один и тот же код (для веб-службы), но на разных платформах. Чтобы определить, что два файла сценария представляют один и тот же веб-сервис, я должен иметь возможность отследить их cha1 до одного и того же корня? - person fortyfoxes; 18.01.2011