Можно ли склонировать git репозиторий по sha1(хэшу коммита)?
В проекте строим билды через Хадсон.
Для получения кода делаем git clone
Хочется строить билды для конкретной ветки и коммита.
Проблема в том, что для имени ветки всё работает хорошо, т.е: git clone our_repo/repo_name.git -b master_Branch_Name
Но если вместо имени ветки поставить хэш, скажем: git clone our_repo/repo_name.git -b c0ff7a5663a73790746a084b023c3f75ec6b0465
Получаем fatal: Remote branch c0ff7a5663a73790746a084b023c3f75ec6b0465 not found in upstream origin
Да можно, конечно, сначала
git clone our_repo/repo_name.git
...
git checkout c0ff7a5663a73790746a084b023c3f75ec6b0465
Но может есть решение в одну строчку?
Или почему не работает git clone -b?
потому что
-b
Instead of pointing the newly created HEAD to the branch pointed to by the cloned repository’s HEAD, point to branch instead. In a non-bare repository, this is the branch that will be checked out. --branch can also take tags and detaches the HEAD at that commit in the resulting repository.
Почему не подходят тэги, написал в комменте на ответ выше..
2 строки - ничем не плохо. Просто не понятно почему по имени и тэгу можно, а по хэшу вдруг нельзя..
Кирилл Оленёв: как-то подозрительно у вас процесс организован, имхо
зачем каждый раз клонировать, и что такое творится с кодом, что часто нужно отдельные коммиты тестить.
Ну клонируем не весь репозиторий, а только одну ветку. Это не является проблемой.
Процесс и код тоже не причём. Просто часто удобно бывает построить конкретный коммит, скажем есть dev ветка, в ней 20 коммитов. Первые 10 вроде вроде как уже более менее стабильны, можно сделать быстрый промежуточный билд без раздувания процесса..
Кирилл Оленёв: чисто для примера, как у меня на проекте:
накопилось чуток замерженных пулл-реквестов - делается билд.
билд делается из конкретной ветки, как правило - dev.
в момент билдования туда ставится тэг, например dev5.0.8.
в результате на сервере где все тестируется мы можем легко переключать билды с помощью тегов.
ну и чтобы найти "хитрый баг" - достаточно определить в каком билде он появился, а там уже вручную проанализировать коммиты между соседними билдами.
Ну, понимаете, на вкус и цвет, и кому как удобнее:)
Вопрос ведь, не для чего так надо, а как)
Верный ответ - клонировать по хэшу нельзя - work as designed как говорится..