Как воспроизвести историю репозитория Git в подкаталог?

Если обнаружилось, что использование чего-либо другого, кроме ip (0.0.0.0), было причиной сбоя. Итак, указание известного IP-адреса было проблемой.

Я использовал syslog-ng 3.5.6.

6
30.04.2016, 19:26
2 ответа

Во-первых, перепишите историю bee, чтобы переместить все файлы в подкаталог:

cd /path/to/bee
git filter-branch -f --prune-empty --tree-filter '
dir="my fancy/target directory"
if [ ! -e "$dir" ]
then
    mkdir -p "$dir"
    git ls-tree --name-only $GIT_COMMIT | xargs -I files mv files "$dir"
fi'

git log --stat должен показать каждый файл, появляющийся в моем причудливом/целевом каталоге. Теперь вы можете объединить историю в aye с лёгкостью:

cd /path/to/aye
git remote add -f bee /path/to/bee
git checkout -b bee-master bee/master
git rebase master
git checkout master
git rebase bee-master

Пересоздайте подмодуль в aye:

git submodule add git://my-submodule 'my fancy/target directory/my-submodule'

Наконец, вы можете очистить aye:

git rm 'my fancy/target directory/.gitmodules'
git branch -D bee-master
git remote remove bee

Возможно, вам также придётся исправить абсолютные пути в вашем репозитории (например, в .gitignore)

12
27.01.2020, 20:24

Гораздо более быстрая версия (подсказка к этому ответу):

git filter-branch --index-filter 'git ls-files -s | sed "s-\t\"*-&newsubdir/-" | GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info && mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"'

Замените newsubdirлюбым каталогом или вложенным каталогом, который вам нравится. В macOS вам, возможно, придется использовать gsedвместоsed(для установки с помощью brew install gnu-sed).

2
27.01.2020, 20:24

Теги

Похожие вопросы