diff options
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index fb0260a42a..4e46ec8f30 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py | |||
@@ -38,6 +38,12 @@ Supported SRC_URI options are: | |||
38 | who has its own routine to checkout code. | 38 | who has its own routine to checkout code. |
39 | The default is "0", set nocheckout=1 if needed. | 39 | The default is "0", set nocheckout=1 if needed. |
40 | 40 | ||
41 | - bareclone | ||
42 | Create a bare clone of the source code and don't checkout the source code | ||
43 | when unpacking. Set this option for the recipe who has its own routine to | ||
44 | checkout code and tracking branch requirements. | ||
45 | The default is "0", set bareclone=1 if needed. | ||
46 | |||
41 | """ | 47 | """ |
42 | 48 | ||
43 | #Copyright (C) 2005 Richard Purdie | 49 | #Copyright (C) 2005 Richard Purdie |
@@ -95,6 +101,11 @@ class Git(FetchMethod): | |||
95 | 101 | ||
96 | ud.rebaseable = ud.parm.get("rebaseable","0") == "1" | 102 | ud.rebaseable = ud.parm.get("rebaseable","0") == "1" |
97 | 103 | ||
104 | # bareclone implies nocheckout | ||
105 | ud.bareclone = ud.parm.get("bareclone","0") == "1" | ||
106 | if ud.bareclone: | ||
107 | ud.nocheckout = 1 | ||
108 | |||
98 | branches = ud.parm.get("branch", "master").split(',') | 109 | branches = ud.parm.get("branch", "master").split(',') |
99 | if len(branches) != len(ud.names): | 110 | if len(branches) != len(ud.names): |
100 | raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url) | 111 | raise bb.fetch2.ParameterError("The number of name and branch parameters is not balanced", ud.url) |
@@ -220,7 +231,11 @@ class Git(FetchMethod): | |||
220 | if os.path.exists(destdir): | 231 | if os.path.exists(destdir): |
221 | bb.utils.prunedir(destdir) | 232 | bb.utils.prunedir(destdir) |
222 | 233 | ||
223 | runfetchcmd("git clone -s -n %s/ %s" % (ud.clonedir, destdir), d) | 234 | cloneflags = "-s -n" |
235 | if ud.bareclone: | ||
236 | cloneflags += " --mirror" | ||
237 | |||
238 | runfetchcmd("git clone %s %s/ %s" % (cloneflags, ud.clonedir, destdir), d) | ||
224 | if not ud.nocheckout: | 239 | if not ud.nocheckout: |
225 | os.chdir(destdir) | 240 | os.chdir(destdir) |
226 | if subdir != "": | 241 | if subdir != "": |