[git-users] Re: help with combine repositories

2012-05-28 Thread Stefan Szabo
I could actively tell git that two trees are the same.
I'll keep my eyes open for an answer to this one on this list, as this 
interests me as much as it does you. This is key for your problem.
But I can tell you this much: over here, where I'm working, we cloned 
entire reposes -- history and all -- so that we could easily pull from each 
other when needed, without worrying about differing histories. We're also 
using the patch-based approach, but the issue of failing to apply older 
patches to newer branches arises frequently. The way we're working around 
that, is to apply the older patch to a temporary branch starting from the 
commit the patch was created from, and then cherry-pick it onto the right 
branch. If there are no conflicts, git will do the right thing every time, 
and history is key.

Suppose, I have a repository with history on master.
Now I create a new branch new from nothing that includes all the same 
files as master, but no history. Just as if i created all the files now 
from scratch.
I'm not sure you can do that at all in git, i.e. branch from no commit. 
That, indeed, would be like cloning with no history. I'll also keep my eyes 
peeled for this one...

Thank you for your feedback as well.


vineri, 25 mai 2012, 22:43:36 UTC+3, 7ff a scris:

 Stafen, thank you for your reply,

 Am Freitag, 25. Mai 2012 13:49:52 UTC+2 schrieb Stefan:

 [...]There simply is no way to cherry-pick commits (or rebase branches) 
 from B into A, since git has no way to know that they are even the same 
 source tree, let alone have any common history among them.


 I did know about the different sha when they don't have a common history.
 I was under the impression, that I could actively tell git that two trees 
 are the same. But it seems I was remembering wrongly, git merge -s ours 
 does the opposite of what I want: merge in all the history without changing 
 files :-(

 To simplify the problem a bit (forget about the submodule and changes 
 files and two repositories for a moment):

 Suppose, I have a repository with history on master.
 Now I create a new branch new from nothing that includes all the same 
 files as master, but no history. Just as if i created all the files now 
 from scratch.

 master and new have no common history, right.

 But could I not merge new into master? There should not be any conflicts 
 since all files are the same. (?)

 Or if it is seen as a conflict that I want to recreate an already existing 
 file (even with the very same content), I could resolve this easily, by 
 just adding either version.
 What am I missing here?
 I might try this experiment later and see what's happening. I suspect that 
 it will not work that way even though I don't really understand why ...

 So, the way I see it, in your case you have but one choice, and that is to 
 move patches from B to A (and backwards, if A is indeed active itself!) and 
 applying them in the same sequence. Git also tries to make this easier for 
 you by providing things like format-patch, send-email, apply, etc.


 right, applying patch-files, or even copying files over and checking them 
 in again, that was my Plan B already.

 cheers
 Matt


-- 
You received this message because you are subscribed to the Google Groups Git 
for human beings group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/git-users/-/BZ7sipuaNkUJ.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/git-users?hl=en.



[git-users] Re: help with combine repositories

2012-05-25 Thread Stefan Szabo
Maybe I can also help shed some light here.
I'll start with the difference between patch and commit. Patch is -- 
simply put -- a diff between two versions of the same tree. You can only 
apply the patch to the same version of the tree from which it was 
generated. Period.
In comes git to add a new dimension to patching: the history. A patch with 
a history is a commit. Every commit has a SHA1 that makes it unique. Two 
commits that have different SHA1s are viewed as different commits, even 
though running git format-patch on both could yield identical results! 
otherwise put, even though it's the same patch, if applied to different 
histories, you have different commits. And this is the case with your A and 
B reposes. Even though B starts fresh from a given commit in A, git has no 
way of knowing this without replicating the entire history (I'm not an 
expert here, so someone may cut in and contradict me; but this highlights 
the true git-related question behind your question: Is there a way to link 
two separate git histories without actually replicating them?). There 
simply is no way to cherry-pick commits (or rebase branches) from B into A, 
since git has no way to know that they are even the same source tree, let 
alone have any common history among them.
So, the way I see it, in your case you have but one choice, and that is to 
move patches from B to A (and backwards, if A is indeed active itself!) and 
applying them in the same sequence. Git also tries to make this easier for 
you by providing things like format-patch, send-email, apply, etc.

Anyone else please feel free to disagree.

joi, 24 mai 2012, 18:40:52 UTC+3, 7ff a scris:

 Hello,

 I would appreciate some help or suggetions on this problem:

 condensed version:
 -

 A) a big repository with long history and a submodule
 B) a small repo made recently from an export of repo A, except some 
 files/folders and including the files from the submodule of A

 how can I merge new commits (or cherrypick)?


 more detailed:
 ---
 repo A is a project with about 10 years of history (partially imported 
 form svn) which I want to keep. This repo includes files for different 
 customers/ applications.

 Recently, I agreed to work on this project with a team of one customer in 
 a shared git repository. Obviously, they must not be able to see private 
 files belonging to other customers. And there was no need for them to see 
 my 10ys of history.
 So for a quick start, I just created a new repository with the files to be 
 used. And to make things simpler (maybe more complicated now) I included 
 the files from the submodule.

 Now I want to link the two repos so that I can merge new commits between 
 the two repos. 
 (git remote starts with a no common history warning ... so maybe some 
 merge -s ours magic should be applied ... ? But the difference in 
 submodules makes me doubt that this will be easy)

 To be sure not to import private object into B, merging one way B into A 
 alone would be a helpful start. Ideally, I would to able to merge both ways.

 Is this possible at all? Or should I prepare to juggle with patch files?

 Thanks,
 Matt


-- 
You received this message because you are subscribed to the Google Groups Git 
for human beings group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/git-users/-/QBXtZrkYVRMJ.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/git-users?hl=en.



[git-users] Re: help with combine repositories

2012-05-25 Thread 7ff
Stafen, thank you for your reply,

Am Freitag, 25. Mai 2012 13:49:52 UTC+2 schrieb Stefan:

 [...]There simply is no way to cherry-pick commits (or rebase branches) 
 from B into A, since git has no way to know that they are even the same 
 source tree, let alone have any common history among them.


I did know about the different sha when they don't have a common history.
I was under the impression, that I could actively tell git that two trees 
are the same. But it seems I was remembering wrongly, git merge -s ours 
does the opposite of what I want: merge in all the history without changing 
files :-(

To simplify the problem a bit (forget about the submodule and changes files 
and two repositories for a moment):

Suppose, I have a repository with history on master.
Now I create a new branch new from nothing that includes all the same 
files as master, but no history. Just as if i created all the files now 
from scratch.

master and new have no common history, right.

But could I not merge new into master? There should not be any conflicts 
since all files are the same. (?)

Or if it is seen as a conflict that I want to recreate an already existing 
file (even with the very same content), I could resolve this easily, by 
just adding either version.
What am I missing here?
I might try this experiment later and see what's happening. I suspect that 
it will not work that way even though I don't really understand why ...

So, the way I see it, in your case you have but one choice, and that is to 
 move patches from B to A (and backwards, if A is indeed active itself!) and 
 applying them in the same sequence. Git also tries to make this easier for 
 you by providing things like format-patch, send-email, apply, etc.


right, applying patch-files, or even copying files over and checking them 
in again, that was my Plan B already.

cheers
Matt

-- 
You received this message because you are subscribed to the Google Groups Git 
for human beings group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/git-users/-/DEWCBzSEMm4J.
To post to this group, send email to git-users@googlegroups.com.
To unsubscribe from this group, send email to 
git-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/git-users?hl=en.