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]

 



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.

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. 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.

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"
[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]