2017-02-20 2 views
1

Пусть я на совершению которого подмодуль s1Git подмодуль из начнут извлекать последнюю gitmodule

и кто-то добавили подмодуль s2 в совершат + 1, теперь я не хочу, чтобы перейти к + 1, но принести (только скачать) подмодуль s2.

Возможно ли это?

моя мерзавец версия 2.1.4 я могу получить 2.10.1.windows.1, если требуется обновить

Edit: простой сценарий, я пытался, он имеет некоторые проблемы - .git папка находится внутри новой клонированной subodule, а не в папке .git/modules супер rep. - рабочий каталог загрязнен новым подмодулем: |

git diff HEAD origin/master .gitmodules 2>&1 | perl -e ' 
while(<>) 
{ 
    if(/^\+\s+path = (.+)/) 
    { 
     my $path = $1; 
     my $line = <>; 
     if($line=~/^\+\s+url = (.+)/) 
     { 
     my $url = $1; 
     print "$path -> $url\n"; 
     `git clone "$url" "$path"` 
     } 
    } 
}' 

ответ

0

Возможно ли это?

Не совсем: вы можете show the content of the latest .gitmodule file:

git fetch 
git show origin/master:./.gitmodules 

Это даст вам URL второго субмодуля s2, но не его SHA1.

Если этого достаточно, вы можете клонировать его в своем собственном репо (вложенное git-репо).


Если вы можете перейти к latest Git for Windows (2.11 или вскоре 2.12), я хотел бы использовать git worktree command:

  • чекаут a+1 совершить в отдельном worktree (с указанной git worktree команды), и запустить a git submodule update --init в этом отдельном рабочем столе,
  • сделать (от вашего собственного текущего репо до фиксации «a») символическую ссылку на s2, которая правильно выставляется с правой стороны SHA1

Таким образом, вы не перемещаете свое текущее репо, но при этом получаете фактическое содержание субмодуля s2 от a+1.

+0

Так что это простой сценарий, который я сделал для вашего 1-го метода, здесь что-то не так? потому что, когда i clone s2, папка '.git' подмодуля находится внутри подмодуля не в' .git/modules супер репозитория' Редактирование: ставить этот сценарий, поскольку я не могу его форматировать здесь – tejas

+0

@tejas не беспокоить 1-й метод: он не знал, какую точную версию s2 проверить. Сделайте 2d-метод с git worktree: он позволяет иметь несколько рабочих деревьев, то есть ваше текущее рабочее дерево будет не тронуто (за исключением символической ссылки, которая существует и в Windows, с простым соединением: 'mklink/J') – VonC

+0

Мне не нужно проверять s2, просто пытался сохранить время загрузки, когда на самом деле проверял/делал обновление подмодуля – tejas

Смежные вопросы