Re: Merging submodules
From: Santi Béjar <hidden>
Date: 2016-06-15 22:45:05
On Thu, Jul 31, 2008 at 17:01, H.Merijn Brand [off-list ref] wrote:
On Thu, 31 Jul 2008 15:06:26 +0200, Petr Baudis [off-list ref] wrote:quoted
On Thu, Jul 31, 2008 at 02:39:55PM +0200, H.Merijn Brand wrote:quoted
There is a slight problem with this merging approach. The path names are as they are/were in the submodules. In module_a, foo.pl was without a leading module_a/ path, and now after integration, it still is. Is it possible to rethink this whole process that integrates/merges the several git repo's in subfolders into the current folder, as-if they would have been in this folder in the first place?I would suggest re-reading Santi's suggestions:quoted
You have, basically, two possibilities: 1) Add the module_# as submodules: http://www.kernel.org/pub/software/scm/git/docs/git-submodule.html http://git.or.cz/gitwiki/GitSubmoduleTutorial 2) Add the submodules as subtrees (as gitk and git-gui in git.git) http://www.kernel.org/pub/software/scm/git/docs/howto/using-merge-subtree.htmlI think the latter is specifically what you want.I got stuck in that process, as the new repo thinks all the files from the sub-folders belong to the top-folder: After this process, there are a lot of files from subfolder include in the "new" top-level folder.
I see all OK. Can you provide a self consistent simple testcase that shows what is wrong? # prepare the project and the modules mkdir project cd project git init ... mkdir module_a cd module_a git init ... # your script # show what you get and what you expect, for example: $ git show HEAD: # or something equivalent $ ls $ git status ...
--8<--- git-join.sh #!/bin/sh export MODS MODS="include fnc" MODS="$MODS i00f000 i99f000" MODS="$MODS l00m000 l01f000 l02f000 l03f000 l06f000 l90z000" MODS="$MODS rpt" MODS="$MODS leerpl mutbev prtabel tabellen zoomen" echo "Creating merge environment" rm -rf new mkdir new cd new echo "Recovering original repo's" tbz -s -x ../lep4gl-git echo "Initializing new repo" git init for mod in $MODS ; do echo "Merging $mod ..." git remote add -f B$mod $mod git merge -s ours --no-commit B$mod/master git read-tree --prefix=$mod/ -u B$mod/master git commit -m "Merge $mod as our subdirectory"
git pull -s subtree B$mod master
This is only needed when updating the subtree if the module has been updated (but it should do nothing in you case).
done echo Done -->8---
Santi