Команды git поддерева не работают в Windows? - PullRequest
0 голосов
/ 20 мая 2019

Я немного новичок в семействе команд git поддерево , так что, возможно, я совершенно не понимаю, как они работают.Если так, то заранее извиняюсь.

Короче говоря, я ожидаю, что команда git subtree pull объединит изменения, но, похоже, она не работает.

У меня естьсобрать пакетный файл Windows, который иллюстрирует проблему (или мое замешательство).Его можно запустить в окне Git CMD:

cls
rem Test git subtree

set root=c:\git-test
set librepo=%root%\librepo
set uselibrepo=%root%\uselibrepo

rem Clean-up
cd \
rd /s /q %root%

rem Initialize repos
md %librepo%
cd /d %librepo%
git init
md %uselibrepo%
cd /d %uselibrepo%
git init

rem Add files to librepo
cd /d %librepo%
echo Hi >fileInRoot.txt
md lib
cd lib
echo Mom >fileInLib.txt
cd..
git add fileInRoot.txt
git add lib\fileInLib.txt
git commit -m "Initial files in repo with lib"

rem Add files to uselibrepo
cd /d %uselibrepo%
echo Excellent>file1.txt
git add file1.txt
git commit -m "Initial files in repo that will have lib subtree"

rem Add subtree to uselibrepo
cd /d %librepo%
git subtree push --prefix=lib %uselibrepo% libBranch
cd /d %uselibrepo%
git subtree add --prefix=lib %uselibrepo% libBranch
git branch -D libBranch

rem Add/change files in lib
cd /d %librepo%\lib
echo Dad >fileInLib.txt
echo Adventure >anotherLib.txt
git add anotherLib.txt
git commit -m "Updates to lib in original location"

rem Share changes
cd /d %librepo%
git subtree push --prefix=lib %uselibrepo% libBranch
cd /d %uselibrepo%
git subtree pull --prefix=lib %uselibrepo% libBranch
git branch -D libBranch

rem New file is found in both places
type %librepo%\lib\anotherLib.txt
type %uselibrepo%\lib\anotherLib.txt

rem Changed file is NOT the same in both places
type %librepo%\lib\fileInLib.txt
type %uselibrepo%\lib\fileInLib.txt

Сценарий устанавливает два репозитория.В одном репозитории есть папка lib, которая используется совместно с другим репозиторием через git subtree add .

После установки в исходную папку lib добавляется файл, а другой файл изменяется.Изменения извлекаются с помощью git subtree push , а затем объединяются с помощью git subtree pull .

Ожидаемый результат: обе папки lib будут одинаковыми.

Фактический результат: в обеих папках lib есть добавленный файл, но измененный файл не обновлен.

Per git --version , я использую git версии 2.21.0.windows.1 .

Обновление

Пару дней прошло без комментариев от кого-либо здесь,так что я передал это git people как сообщение об ошибке .

...