git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Q. regarding subtree merge
@ 2008-04-18  9:36 Stefan Näwe
  2008-04-18 10:02 ` Santi Béjar
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Näwe @ 2008-04-18  9:36 UTC (permalink / raw)
  To: git

Hi all.

I tried the scenario described in 
$GIT_DIR/Documentation/howto/using-merge-subtree.txt and have some problems 
with it.

My setup:

I use git to track my changes in three different "project directories", lets
say:

...../src_root/libfoo
...../src_root/appbar
...../bin_root/installed

All three git repositories contain a topic branch (lets say 'current-work')
that I want to track. 

Now I want to setup one git repository containing only the three directories
'libfoo', 'appbar', and 'installed' that others can clone easily. Reading the
above howto document, I think this should be possible. 

I do:

  $ mkdir super-prj 
  $ cd super-prj 
  $ git init
  $ git add remote -f libfoo ../path/to/src_root/libfoo

OK. No problem. 

The problem arises after the second step of the howto:

  $ git merge -s ours --no-commit libfoo/current-work

Now, all files of 'libfoo' are in the current directory. This is not what I 
want.

Could someone please tell me what I'm doing wrong?

Thanks

Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Q. regarding subtree merge
  2008-04-18  9:36 Q. regarding subtree merge Stefan Näwe
@ 2008-04-18 10:02 ` Santi Béjar
  2008-04-18 10:09   ` Santi Béjar
  0 siblings, 1 reply; 5+ messages in thread
From: Santi Béjar @ 2008-04-18 10:02 UTC (permalink / raw)
  To: Stefan Näwe; +Cc: git

On Fri, Apr 18, 2008 at 11:36 AM, Stefan Näwe
<stefan.naewe+git@gmail.com> wrote:
> Hi all.
>
>  I tried the scenario described in
>  $GIT_DIR/Documentation/howto/using-merge-subtree.txt and have some problems
>  with it.
>
>  My setup:
>
>  I use git to track my changes in three different "project directories", lets
>  say:
>
>  ...../src_root/libfoo
>  ...../src_root/appbar
>  ...../bin_root/installed
>
>  All three git repositories contain a topic branch (lets say 'current-work')
>  that I want to track.
>
>  Now I want to setup one git repository containing only the three directories
>  'libfoo', 'appbar', and 'installed' that others can clone easily. Reading the
>  above howto document, I think this should be possible.
>
>  I do:
>
>   $ mkdir super-prj
>   $ cd super-prj
>   $ git init
>   $ git add remote -f libfoo ../path/to/src_root/libfoo
>
>  OK. No problem.
>
>  The problem arises after the second step of the howto:
>
>   $ git merge -s ours --no-commit libfoo/current-work
>
>  Now, all files of 'libfoo' are in the current directory. This is not what I
>  want.
>
>  Could someone please tell me what I'm doing wrong?

You are trying to merge libfoo with an empty project, so the merge
just "fast-forward" to the other commit as you do not have an "ours".

Simply skip the merge step.

Santi

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Q. regarding subtree merge
  2008-04-18 10:02 ` Santi Béjar
@ 2008-04-18 10:09   ` Santi Béjar
  2008-04-18 12:18     ` Stefan Näwe
  0 siblings, 1 reply; 5+ messages in thread
From: Santi Béjar @ 2008-04-18 10:09 UTC (permalink / raw)
  To: Stefan Näwe; +Cc: git

On Fri, Apr 18, 2008 at 12:02 PM, Santi Béjar <sbejar@gmail.com> wrote:
>
> On Fri, Apr 18, 2008 at 11:36 AM, Stefan Näwe
>  <stefan.naewe+git@gmail.com> wrote:
>  > Hi all.
>  >
>  >  I tried the scenario described in
>  >  $GIT_DIR/Documentation/howto/using-merge-subtree.txt and have some problems
>  >  with it.
>  >
>  >  My setup:
>  >
>  >  I use git to track my changes in three different "project directories", lets
>  >  say:
>  >
>  >  ...../src_root/libfoo
>  >  ...../src_root/appbar
>  >  ...../bin_root/installed
>  >
>  >  All three git repositories contain a topic branch (lets say 'current-work')
>  >  that I want to track.
>  >
>  >  Now I want to setup one git repository containing only the three directories
>  >  'libfoo', 'appbar', and 'installed' that others can clone easily. Reading the
>  >  above howto document, I think this should be possible.
>  >
>  >  I do:
>  >
>  >   $ mkdir super-prj
>  >   $ cd super-prj
>  >   $ git init
>  >   $ git add remote -f libfoo ../path/to/src_root/libfoo
>  >
>  >  OK. No problem.
>  >
>  >  The problem arises after the second step of the howto:
>  >
>  >   $ git merge -s ours --no-commit libfoo/current-work
>  >
>  >  Now, all files of 'libfoo' are in the current directory. This is not what I
>  >  want.
>  >
>  >  Could someone please tell me what I'm doing wrong?
>
>  You are trying to merge libfoo with an empty project, so the merge
>  just "fast-forward" to the other commit as you do not have an "ours".
>
>  Simply skip the merge step.

Ups, I think you have to specify the parent for the new commit. Maybe
change the merge step with:

$ git reset --soft libfoo/current-work

Santi

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Q. regarding subtree merge
  2008-04-18 10:09   ` Santi Béjar
@ 2008-04-18 12:18     ` Stefan Näwe
  2008-04-18 12:59       ` Santi Béjar
  0 siblings, 1 reply; 5+ messages in thread
From: Stefan Näwe @ 2008-04-18 12:18 UTC (permalink / raw)
  To: git; +Cc: Santi Béjar

2008/4/18, Santi Béjar <sbejar@gmail.com>:
> On Fri, Apr 18, 2008 at 12:02 PM, Santi Béjar <sbejar@gmail.com> wrote:
>  >
>  > On Fri, Apr 18, 2008 at 11:36 AM, Stefan Näwe
>  >  <stefan.naewe+git@gmail.com> wrote:
>  >  > Hi all.
>  >  >
>  >  >  I tried the scenario described in
>  >  >  $GIT_DIR/Documentation/howto/using-merge-subtree.txt and have some problems
>  >  >  with it.
>  >  >
>  >  >  My setup:
>  >  >
>  >  >  I use git to track my changes in three different "project directories", lets
>  >  >  say:
>  >  >
>  >  >  ...../src_root/libfoo
>  >  >  ...../src_root/appbar
>  >  >  ...../bin_root/installed
>  >  >
>  >  >  All three git repositories contain a topic branch (lets say 'current-work')
>  >  >  that I want to track.
>  >  >
>  >  >  Now I want to setup one git repository containing only the three directories
>  >  >  'libfoo', 'appbar', and 'installed' that others can clone easily. Reading the
>  >  >  above howto document, I think this should be possible.
>  >  >
>  >  >  I do:
>  >  >
>  >  >   $ mkdir super-prj
>  >  >   $ cd super-prj
>  >  >   $ git init
>  >  >   $ git add remote -f libfoo ../path/to/src_root/libfoo
>  >  >
>  >  >  OK. No problem.
>  >  >
>  >  >  The problem arises after the second step of the howto:
>  >  >
>  >  >   $ git merge -s ours --no-commit libfoo/current-work
>  >  >
>  >  >  Now, all files of 'libfoo' are in the current directory. This is not what I
>  >  >  want.
>  >  >
>  >  >  Could someone please tell me what I'm doing wrong?
>  >
>  >  You are trying to merge libfoo with an empty project, so the merge
>  >  just "fast-forward" to the other commit as you do not have an "ours".
>  >
>  >  Simply skip the merge step.
>
>
> Ups, I think you have to specify the parent for the new commit. Maybe
>  change the merge step with:
>
>  $ git reset --soft libfoo/current-work
>

OK. Thanks. It worked without the merge.
I did another test where the 'super-prj' was not empty, this time with
'git merge -s...' and
that worked as well. So:
If you have an empty super-prj    -> drop the merge
If you have a non-empty super-prj -> do the merge

But I really don't understand (yet...) why it is as it is...

Thanks

Stefan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Q. regarding subtree merge
  2008-04-18 12:18     ` Stefan Näwe
@ 2008-04-18 12:59       ` Santi Béjar
  0 siblings, 0 replies; 5+ messages in thread
From: Santi Béjar @ 2008-04-18 12:59 UTC (permalink / raw)
  To: Stefan Näwe; +Cc: git

On Fri, Apr 18, 2008 at 2:18 PM, Stefan Näwe
<stefan.naewe@googlemail.com> wrote:
> 2008/4/18, Santi Béjar <sbejar@gmail.com>:
>
[...]

>  >
>  >  $ git reset --soft libfoo/current-work
>  >
>
>  OK. Thanks. It worked without the merge.
>  I did another test where the 'super-prj' was not empty, this time with
>  'git merge -s...' and
>  that worked as well. So:
>  If you have an empty super-prj    -> drop the merge

+ git reset --soft commit

If not the next "git merge -s subtree" will fail.

>  If you have a non-empty super-prj -> do the merge
>
>  But I really don't understand (yet...) why it is as it is...

Because you cannot merge an empty branch with another branch.
Maybe "git merge -s ours" should fail in this case, because it does not
make sense to merge an empty branch with the "ours" strategy.

Santi

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-04-18 13:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-18  9:36 Q. regarding subtree merge Stefan Näwe
2008-04-18 10:02 ` Santi Béjar
2008-04-18 10:09   ` Santi Béjar
2008-04-18 12:18     ` Stefan Näwe
2008-04-18 12:59       ` Santi Béjar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).