Skip to content

Latest commit

 

History

History
150 lines (94 loc) · 4.33 KB

monorepo.md

File metadata and controls

150 lines (94 loc) · 4.33 KB

Способы миграции в монорепозиторий

git pull (с сохранением истории коммитов)

Создаем папку для монорепозитория и инициализируем его:

mkdir ~/monorepo && cd ~/monorepo

git init

Добавляем remote на другие репозитории:

git remote add ${FIRST_REPOSITORY} [email protected]:${GITHUB_USER}/${FIRST_REPOSITORY}.git

git remote add ${SECOND_REPOSITORY} [email protected]:${GITHUB_USER}/${SECOND_REPOSITORY}.git

...

Далее внутри каждого репозитория ${FIRST_REPOSITORY}, ${SECOND_REPOSITORY} и т.д. надо создать папки с соответсвующими названиями (${FIRST_REPOSITORY}, ${SECOND_REPOSITORY} и т.д.). Затем переместить все содержимое репозиториев в эти папки.

Пример:

cd ~/${FIRST_REPOSITORY}

mkdir ${FIRST_REPOSITORY}
mv * ${FIRST_REPOSITORY}

А затем скачать (через git pull) эти репозитории внутри монорепозитория:

git pull ${FIRST_REPOSITORY} ${FIRST_REPOSITORY_BRANCH} --allow-unrelated-histories

git pull ${SECOND_REPOSITORY} ${SECOND_REPOSITORY_BRANCH} --allow-unrelated-histories

...

git merge (с сохранением истории коммитов)

Создаем папку для монорепозитория и инициализируем его:

mkdir ~/monorepo && cd ~/monorepo

git init

Добавляем remote на другие репозитории:

git remote add ${FIRST_REPOSITORY} [email protected]:${GITHUB_USER}/${FIRST_REPOSITORY}.git

git remote add ${SECOND_REPOSITORY} [email protected]:${GITHUB_USER}/${SECOND_REPOSITORY}.git

...

Далее внутри каждого репозитория ${FIRST_REPOSITORY}, ${SECOND_REPOSITORY} и т.д. надо создать папки с соответсвующими названиями (${FIRST_REPOSITORY}, ${SECOND_REPOSITORY} и т.д.). Затем переместить все содержимое репозиториев в эти папки.

Пример:

cd ~/${FIRST_REPOSITORY}

mkdir ${FIRST_REPOSITORY}
mv * ${FIRST_REPOSITORY}
git fetch ${FIRST_REPOSITORY}
git merge ${FIRST_REPOSITORY}/${FIRST_REPOSITORY_BRANCH} --allow-unrelated-histories

git fetch ${SECOND_REPOSITORY}
git merge ${SECOND_REPOSITORY}/${SECOND_REPOSITORY_BRANCH} --allow-unrelated-histories

...

git read-tree (без сохранения истории коммитов)

Создаем папку для монорепозитория и инициализируем его:

mkdir ~/monorepo && cd ~/monorepo

git init

Добавляем remote на другие репозитории:

git remote add ${FIRST_REPOSITORY} [email protected]:${GITHUB_USER}/${FIRST_REPOSITORY}.git

git remote add ${SECOND_REPOSITORY} [email protected]:${GITHUB_USER}/${SECOND_REPOSITORY}.git

...

Cкачиваем репозитории:

git fetch ${FIRST_REPOSITORY}
git read-tree --prefix=./${FIRST_REPOSITORY} -u ${FIRST_REPOSITORY}/${FIRST_REPOSITORY_BRANCH}

git fetch ${SECOND_REPOSITORY}
git read-tree --prefix=./${SECOND_REPOSITORY} -u ${SECOND_REPOSITORY}/${SECOND_REPOSITORY_BRANCH}

...

git subtree (с сохранением истории коммитов)

Создаем папку для монорепозитория и инициализируем его:

mkdir ~/monorepo && cd ~/monorepo

git init

Делаем первый пустой коммит:

git commit --allow-empty -n -m "Initial commit."

Cкачиваем репозитории:

git subtree add --prefix ${FIRST_REPOSITORY} [email protected]:${GITHUB_USER}/${FIRST_REPOSITORY}.git ${FIRST_REPOSITORY_BRANCH}

git subtree add --prefix ${SECOND_REPOSITORY} [email protected]:${GITHUB_USER}/${SECOND_REPOSITORY}.git ${SECOND_REPOSITORY_BRANCH}
...

Если надо подпуллиться:

git subtree pull --prefix=${FIRST_REPOSITORY} [email protected]:${GITHUB_USER}/${FIRST_REPOSITORY}.git ${FIRST_REPOSITORY_BRANCH}

git subtree pull --prefix=${SECOND_REPOSITORY} [email protected]:${GITHUB_USER}/${SECOND_REPOSITORY}.git ${SECOND_REPOSITORY_BRANCH}

...