Thread (18 messages) flat view 18 messages, 4 authors, 2016-06-15

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.html
I 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help