Как перенести проекты Git в один проект с подпроектами

У меня сейчас есть несколько проектов, которые находятся в отдельных репозиториях Git. Они также находятся в отдельных проектах eclipse (потому что я долгое время не мог использовать родительские проекты с плагином Maven из-за ошибок в плагине m2). Теперь это работает.

Итак, я объединил проекты в Maven, создав базовый проект pom, добавив его в качестве родительского для других. Затем я вложил подпроекты.

Когда я перешел к фиксации базового проекта как проекта git, он решил, что подкаталоги являются подмодулями, хотя в корневом каталоге не было файла .gitmodules.

Похоже, единственный способ сделать это - это потерять всю историю в объединяемых проектах.

Чтобы быть предельно ясным, текущие имеют:

Project A (repo A)
Project B (repo B)
Project C (repo C)

то, что я хочу:

New Base Project D (repo D)
   /Project A
   /Project B
   /Project C

Я бы предпочел не терять историю, но если придется, Думаю, предыдущие версии можно было убрать на чердак. Я не думаю, что мне нужны подмодули, поскольку они, похоже, предназначены для включения удаленных репозиториев, которые не находятся под вашим контролем.

Превратил решение в сценарий bash. Предполагается, что добавляемые подпрограммы находятся в подкаталогах на том же уровне, что и родительский. Вот он:

#! /bin/bash
git remote add -f $1 ../$1
git merge -s ours --no-commit $1/master
git read-tree --prefix=$1 -u $1/master
git commit -m "Added project $1"

Git потрясающий ..

16
задан Rob 25 May 2011 в 02:22
поделиться