summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-01-31 14:09:24 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-02-03 17:42:14 +0000
commit12e5797e51d93514931945f9bc8a64e7e5db7c72 (patch)
tree22122819978552d22309dc86bc3bc6dec0d446ad /bitbake
parent6c65263f8de068b11b9cbcc53608367ac4cb21a3 (diff)
downloadpoky-12e5797e51d93514931945f9bc8a64e7e5db7c72.tar.gz
fetch2/git: Add workaround for clone using alternates problem
To quote my report of this to the git mailing list: """ I have a problem with git clone commands using alternates failing by mixing up different repositories. I have a situation where I could end up with both: /srv/mirrors/repo /srv/mirrors/repo.git as bare clones. I then try cloning "repo" with alternates with the command: $ git clone -s -n /srv/mirrors/repo /tmp/foo Cloning into /tmp/foo... done. $ cat /tmp/foo/.git/objects/info/alternates /srv/mirrors/repo.git/objects Note how I'm now referencing repo.git, not repo. This doesn't work as expected giving some very bizarre results when actually using the repository. I appreciate this is a rather bizarre corner case but its one that is breaking the build system I work with. Ideally people would use a consistent URL for the same repository but we have an example where they haven't and this really shouldn't break like this. Looking at the code, the cause seems to be clone.c:get_repo_path(): static char *suffix[] = { "/.git", ".git", "" }; since its looking in order for: repo/.git (fails) repo.git (suceeds, incorrect) repo (never looked at) I'm not sure what would break if that order were to change, swapping the last two options. I can "force" the issue by running: git clone -s -n /srv/mirrors/repo/ /tmp/foo but this results in the slightly odd looking: $ cat /tmp/foo/.git/objects/info/alternates /srv/mirrors/repo//objects which does at least work. """ This patch adds the trailing slash to ensure the correct repository is referenced at the expense of some ugliness in the alternates file. (Bitbake rev: d978e7b35550e3785c7c567ffe4c40a3c3947450) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/git.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 87a35d97a3..56fda9a48c 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -220,7 +220,7 @@ class Git(FetchMethod):
220 if os.path.exists(destdir): 220 if os.path.exists(destdir):
221 bb.utils.prunedir(destdir) 221 bb.utils.prunedir(destdir)
222 222
223 runfetchcmd("git clone -s -n %s %s" % (ud.clonedir, destdir), d) 223 runfetchcmd("git clone -s -n %s/ %s" % (ud.clonedir, destdir), d)
224 if not ud.nocheckout: 224 if not ud.nocheckout:
225 os.chdir(destdir) 225 os.chdir(destdir)
226 if subdir != "": 226 if subdir != "":