Hi Markus, On Thursday 30 April 2015 13:17:41 Markus Lehtonen wrote: > 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) > > 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?
Yep, sounds reasonable - I'll rename it in a v2. Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core