Git подмодуль получает неверный хеш фиксации - PullRequest
0 голосов
/ 07 августа 2020

Я выполняю следующие команды

export GIT_TRACE=1
$ git clone git@github.org.com:org/project.git
$ cd project
$ git fetch --force --no-tags --no-recurse-submodules origin refs/heads/project-3.4
$ git checkout -B project-3.4 origin/project-3.4
$ git -C . submodule update --init --remote project-buildscripts
$ cd project-buildscripts
$ git checkout 4i790d3
$ cd ..

Кажется, до сих пор все идет хорошо ... Затем я запускаю

$ git fetch origin
18:10:08.504581 git.c:444               trace: built-in: git fetch origin
18:10:08.510629 run-command.c:663       trace: run_command: unset GIT_PREFIX; ssh git@github.org.com 'git-upload-pack '\''pie/project.git'\'''
remote: Enumerating objects: 3160, done.
remote: Counting objects: 100% (3160/3160), done.
remote: Compressing objects: 100% (27/27), done.
18:10:09.373335 run-command.c:663       trace: run_command: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 85369 on Machine.local' --pack_header=2,8661
18:10:09.380636 git.c:444               trace: built-in: git index-pack --stdin -v --fix-thin '--keep=fetch-pack 85369 on Machine.local' --pack_header=2,8661
remote: Total 8661 (delta 3136), reused 3143 (delta 3133), pack-reused 5501
Receiving objects: 100% (8661/8661), 4.72 MiB | 3.25 MiB/s, done.
Resolving deltas: 100% (5230/5230), completed with 598 local objects.
18:10:11.429321 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
18:10:11.435057 git.c:444               trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs
From github.org.com:pie/project
 + 09aa5f74...4fe45193 project-3.4                       -> origin/project-3.4  (forced update)
 * [new branch]        app-logging                       -> origin/app-logging
... [bunch of other branches]
18:10:11.618055 run-command.c:1617      run_processes_parallel: preparing to run up to 1 tasks
18:10:11.618710 run-command.c:663       trace: run_command: cd /Users/local/junkyard/submod/project/.git/modules/project-buildscripts; unset GIT_PREFIX; GIT_DIR=. git fetch --no-prune --no-prune-tags --recurse-submodules-default on-demand --submodule-prefix project-buildscripts/
Fetching submodule project-buildscripts
18:10:11.625640 git.c:444               trace: built-in: git fetch --no-prune --no-prune-tags --recurse-submodules-default on-demand --submodule-prefix project-buildscripts/
18:10:11.627202 run-command.c:663       trace: run_command: unset GIT_DIR GIT_PREFIX; ssh git@github.org.com 'git-upload-pack '\''pie/project-buildscripts.git'\'''
18:10:12.085406 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
18:10:12.094694 run-command.c:663       trace: run_command: git rev-list --objects --stdin --not --all --quiet --alternate-refs
18:10:12.100317 git.c:444               trace: built-in: git rev-list --objects --stdin --not --all --quiet --alternate-refs
18:10:12.126601 run-command.c:1617      run_processes_parallel: preparing to run up to 1 tasks
18:10:12.126624 run-command.c:1649      run_processes_parallel: done
18:10:12.126647 run-command.c:663       trace: run_command: git gc --auto
18:10:12.133044 git.c:444               trace: built-in: git gc --auto
18:10:12.135664 run-command.c:663       trace: run_command: cd /Users/local/junkyard/submod/project/.git/modules/project-buildscripts; unset GIT_PREFIX; GIT_DIR=. git fetch --no-prune --no-prune-tags --recurse-submodules-default on-demand --submodule-prefix project-buildscripts/ origin 54eb8df72c5bd87a93407354ca1e16394c58e15f
18:10:12.142435 git.c:444               trace: built-in: git fetch --no-prune --no-prune-tags --recurse-submodules-default on-demand --submodule-prefix project-buildscripts/ origin 58ff9df72c5bd87a93407354ca1e16394c58e15f
18:10:12.144087 run-command.c:663       trace: run_command: unset GIT_DIR GIT_PREFIX; ssh git@github.org.com 'git-upload-pack '\''pie/project-buildscripts.git'\'''
error: Server does not allow request for unadvertised object 58ff9df72c5bd87a93407354ca1e16394c58e15f
18:10:12.783758 run-command.c:663       trace: run_command: git gc --auto
18:10:12.791054 git.c:444               trace: built-in: git gc --auto
18:10:12.792972 run-command.c:1649      run_processes_parallel: done
Errors during submodule fetch:
    project-buildscripts
18:10:12.793291 run-command.c:663       trace: run_command: git gc --auto
18:10:12.799263 git.c:444               trace: built-in: git gc --auto

Я убедился, что я go 1007 * и checkout последняя фиксация, но каким-то образом она все еще ссылается на фиксацию, которой сейчас не существует (force-pu sh в каталоге подмодуля).

4i790d3 - New Commit

58ff9df72c5bd87a93407354ca1e16394c58e15f - Старый коммит, потерянный из-за форсированного действия sh в прошлом

Как мне обойти эту проблему и исправить ее? Спасибо.

GitHub Enterprise Server 2.19.17

Github Client - 2.28.0

1 Ответ

0 голосов
/ 07 августа 2020

Это сообщение означает, что сервер не позволяет вам получить объект, который не является заголовком ссылки. Это поведение по умолчанию для Git, поэтому это неудивительно.

Вы можете попробовать включить протокол v2, поскольку реализация на стороне сервера Git не выполняет это ограничение с протоколом v2 . Вы можете сделать это, запустив git config --global protocol.version 2. Однако возможно, что версия GitHub Enterprise Server, которую вы используете, слишком старая, чтобы поддерживать это, и в этом случае нет простого решения.

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

Обратите внимание, что Здесь также может помочь более новая версия GitHub Enterprise Server, поскольку для частичного клонирования параметр на стороне сервера должен быть отключен. Следовательно, если ваша версия GHES поддерживает частичную поддержку клонирования, это должно работать независимо от того, используете вы протокол v2 или нет.

...