Re: GIT cloning(or pull/push) doesn't work properly if you have a sub-folder as its own GIT repo

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Chris,

Thanks for your response. I figured out what I was doing wrong -
http://groups.google.com/group/git-users/browse_thread/thread/d34523680b0ad093

On Sun, Apr 24, 2011 at 2:59 AM, Chris Packham <judge.packham@xxxxxxxxx> wrote:
> On 24/04/11 05:04, Siddique Hameed wrote:
>>
>> I don't want to categorize this as bug until I hear expert panel's
>> opinion. Spare me if its a known issue or if I am doing something
>> silly :) I did enough research online and couldn't find a good answer.
>
> Not exactly an expert but I'll try to help.
>
>> Here it goes..
>>
>> Let's say if I have a folder called "ParentGITRepo" which is a local
>> GIT repo. I have sub folders called "Child1Repo" and "Child2" with
>> some files on it. For some reason, whether accidentally or
>> deliberately, I make "Child1Repo" a GIT repo on its own. GIT
>> recognizes ParentGITRepo&  Child1Repo as separate GIT repositories.
>> But, if I clone "ParentGITRepo" into somewhere else, I am missing
>> everything from Child1Repo.
>
> That's expected behaviour as far as I'm concerned (based on your example).
> ParentGITRepo and Child1Repo are completely independent at this point.
> Cloning ParentGITRepo won't get you any untracked files that happen to be in
> the work-tree of the repository you're cloning.
>
>> The worse thing is, even if I cleanup
>> "Child1Repo" by removing it's .git folder, the parent GIT repo is
>> ignoring any activity I do in that folder.
>
> So your options at this point are to make Child1Repo a submodule or to
> re-write ParentGITRepo and Child1Repo into a new repository combining the
> history of both. Depending on your exact needs one option may be better than
> the other so do some more googling to find something that suits your case.
>
>> I think, the right way to do this setup is probably using git sub
>> modules or something. But given this scenario, what is the expected
>> behaviour? Am i missing? It would really make more sense if you can go
>> thro the following steps (test cases) outlined below.
>>
>>
>> # Setting up ParentGITRepo&  Child1Repo and Child2
>> $ cd ~
>> $ mkdir ParentGITRepo
>> $ cd ParentGITRepo/
>> $ git init .
>> $ mkdir Child1Repo
>> $ mkdir Child2
>> $ cd Child1Repo/
>> $ git init .
>> $ echo "Child1RepoFile">  Child1RepoFile.txt
>> $ git add .
>> $ git commit -a -m "Adding Child1Repo content"
>
> At this point you could have just treated Child1Repo as a normal
> subdirectory. One thing some people struggle with is the fact that git
> doesn't track empty directories, as soon as there a files in those
> directories it'll work just fine.
>
>> [master (root-commit) 01ccc52] Adding Child1Repo content
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>  create mode 100644 Child1RepoFile.txt
>>
>> $ cd ../Child2/
>> $ echo "Child2 file content">  Child2File.txt
>> $ cd ..
>> $ echo "Parentfile">  ParentFile.txt
>> $ git add .
>> $ git commit -a -m "Adding Parent content"
>> [master (root-commit) b31d0a5] Adding Parent content
>>  3 files changed, 3 insertions(+), 0 deletions(-)
>>  create mode 160000 Child1Repo
>>  create mode 100644 Child2/Child2File.txt
>>  create mode 100644 ParentFile.txt
>>
>> ---------------------------------------
>>  # Now verify ParentGITRepo&  Child1Repo working independently
>> $ cd ~/ParentGITRepo/
>> $ git log
>> commit b31d0a5aef19c6b119d89718f560905ad0f34aa7
>> Author: Siddique Hameed<siddii+git@xxxxxxxxx>
>> Date:   Fri Apr 22 11:25:15 2011 -0500
>>
>>    Adding Parent content
>>
>> $ cd ~/ParentGITRepo/Child1Repo/
>> $ git log
>> commit 01ccc52931f8b40f6d92b29769300a254d8dd411
>> Author: Siddique Hameed<siddii+git@xxxxxxxxx>
>> Date:   Fri Apr 22 11:22:00 2011 -0500
>>
>>    Adding Child1Repo content
>>
>> --------------------------------------------
>>
>> # Now try cloning ParentGITRepo&  verify the contents inside it
>> $ cd ~
>> $ git clone ParentGITRepo/ ParentGITRepoClone/
>> Cloning into ParentGITRepoClone...
>> done.
>> $ cd ParentGITRepoClone/
>> $ ls -a
>> ./  ../  .git/  Child1Repo/  Child2/  ParentFile.txt
>>
>> $ cd Child1Repo/
>> $ ls -a
>> ./  ../
>>
>> $ git log
>> commit b31d0a5aef19c6b119d89718f560905ad0f34aa7
>> Author: Siddique Hameed<siddii+git@xxxxxxxxx>
>> Date:   Fri Apr 22 11:25:15 2011 -0500
>>
>>    Adding Parent content
>>
>> --------------------------------------------
>>
>> As you can see there is nothing in Child1Repo after its was cloned. I
>> also tried the reverse of this. Like, having a child folder as GIT
>> repo and make a ParentFolder a repo on its own&  clone the parent
>> folder and the cloned folder doesnt contain anything from child repo.
>>
>> Let me know if you have more questions.
>>
>> Thanks,
>>
>> Siddique
>> --
>
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]