Hi, On Wed, 2015-04-29 at 14:41 +0100, Paul Eggleton wrote: > If -x is specified and the specified URI was a git repository, we need > to ensure that the resulting clone is a full clone and not one that has > pointers into the temporary fetch location or DL_DIR. Split out the code > from devtool that already does this for "devtool modify -x" and reuse > that. > > Signed-off-by: Paul Eggleton <paul.eggle...@linux.intel.com> > --- > scripts/lib/devtool/standard.py | 8 ++------ > scripts/lib/recipetool/create.py | 2 ++ > scripts/lib/scriptutils.py | 10 ++++++++++ > 3 files changed, 14 insertions(+), 6 deletions(-) > > diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py > index 94b5e0b..eb41f28 100644 > --- a/scripts/lib/devtool/standard.py > +++ b/scripts/lib/devtool/standard.py > @@ -23,6 +23,7 @@ import glob > import tempfile > import logging > import argparse > +import scriptutils > from devtool import exec_build_env_command, setup_tinfoil > > logger = logging.getLogger('devtool') > @@ -236,12 +237,7 @@ def _extract_source(srctree, keep_temp, devbranch, d): > # Handle if S is set to a subdirectory of the source > srcsubdir = os.path.join(workdir, os.path.relpath(srcsubdir, > workdir).split(os.sep)[0]) > > - if os.path.exists(os.path.join(srcsubdir, '.git')): > - alternatesfile = os.path.join(srcsubdir, '.git', 'objects', > 'info', 'alternates') > - if os.path.exists(alternatesfile): > - # This will have been cloned with -s, so we need to convert > it to a full clone > - bb.process.run('git repack -a', cwd=srcsubdir) > - os.remove(alternatesfile) > + scriptutils.git_convert_full_clone(srcsubdir) > > patchdir = os.path.join(srcsubdir, 'patches') > haspatches = False > diff --git a/scripts/lib/recipetool/create.py > b/scripts/lib/recipetool/create.py > index 1d5bfd9..15de694 100644 > --- a/scripts/lib/recipetool/create.py > +++ b/scripts/lib/recipetool/create.py > @@ -22,6 +22,7 @@ import glob > import fnmatch > import re > import logging > +import scriptutils > > logger = logging.getLogger('recipetool') > > @@ -238,6 +239,7 @@ def create_recipe(args): > outlines.extend(lines_after) > > if args.extract_to: > + scriptutils.git_convert_full_clone(srctree) > shutil.move(srctree, args.extract_to) > logger.info('Source extracted to %s' % args.extract_to) > > diff --git a/scripts/lib/scriptutils.py b/scripts/lib/scriptutils.py > index e786126..4af6fd5 100644 > --- a/scripts/lib/scriptutils.py > +++ b/scripts/lib/scriptutils.py > @@ -58,3 +58,13 @@ def load_plugins(logger, plugins, pluginpath): > if hasattr(plugin, 'plugin_init'): > plugin.plugin_init(plugins) > plugins.append(plugin) > + > +def git_convert_full_clone(repodir): > + """If specified directory is a git repository, ensure it's a full > clone""" > + import bb.process > + if os.path.exists(os.path.join(repodir, '.git')): > + alternatesfile = os.path.join(repodir, '.git', 'objects', 'info', > 'alternates') > + if os.path.exists(alternatesfile): > + # This will have been cloned with -s, so we need to convert it > to a full clone > + bb.process.run('git repack -a', cwd=repodir) > + os.remove(alternatesfile) > -- > 2.1.0 >
I just find the term "full clone" a bit misleading here. I somehow tend to associate it with a mirrored clone / cloning all refs / cloning with full history. Could the term used above be "independent clone" or "standalone clone" or something? Thanks, Markus Lehtonen -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core