# HG changeset patch # User Durham Goode # Date 1440479761 25200 # Node ID e63d05fbae847cd35d5afa66b24c2f58e7bfdfa0 # Parent cebf7e48365e12fafb405a5746f4df94133fec02 convert: add convert.git.skipsubmodules option This adds an option to not pull in gitsubmodules during a convert. This is useful when converting large git repositories where gitsubmodules were allowed historically, but are no longer wanted. diff -r cebf7e48365e -r e63d05fbae84 hgext/convert/__init__.py --- a/hgext/convert/__init__.py Mon Aug 24 19:33:36 2015 -0700 +++ b/hgext/convert/__init__.py Mon Aug 24 22:16:01 2015 -0700 @@ -316,6 +316,9 @@ ``convert.git.remoteprefix`` as a prefix followed by a /. The default is 'remote'. + :convert.git.skipsubmodules: does not convert root level .gitmodules files + or files with 160000 mode indicating a submodule. Default is False. + Perforce Source ############### diff -r cebf7e48365e -r e63d05fbae84 hgext/convert/git.py --- a/hgext/convert/git.py Mon Aug 24 19:33:36 2015 -0700 +++ b/hgext/convert/git.py Mon Aug 24 22:16:01 2015 -0700 @@ -224,6 +224,8 @@ lcount = len(difftree) i = 0 + skipsubmodules = self.ui.configbool('convert', 'git.skipsubmodules', + False) def add(entry, f, isdest): seen.add(f) h = entry[3] @@ -232,6 +234,9 @@ renamesource = (not isdest and entry[4][0] == 'R') if f == '.gitmodules': + if skipsubmodules: + return + subexists[0] = True if entry[4] == 'D' or renamesource: subdeleted[0] = True @@ -239,7 +244,8 @@ else: changes.append(('.hgsub', '')) elif entry[1] == '160000' or entry[0] == ':160000': - subexists[0] = True + if not skipsubmodules: + subexists[0] = True else: if renamesource: h = hex(nullid) diff -r cebf7e48365e -r e63d05fbae84 tests/test-convert-git.t --- a/tests/test-convert-git.t Mon Aug 24 19:33:36 2015 -0700 +++ b/tests/test-convert-git.t Mon Aug 24 22:16:01 2015 -0700 @@ -652,6 +652,12 @@ $ hg -R git-repo6-hg tip -T "{file_dels}\n" .hgsub .hgsubstate +skip submodules in the conversion + + $ hg convert -q git-repo6 no-submodules --config convert.git.skipsubmodules=True + $ hg -R no-submodules manifest --all + .gitmodules-renamed + convert using a different remote prefix $ git init git-repo7 Initialized empty Git repository in $TESTTMP/git-repo7/.git/ diff -r cebf7e48365e -r e63d05fbae84 tests/test-convert.t --- a/tests/test-convert.t Mon Aug 24 19:33:36 2015 -0700 +++ b/tests/test-convert.t Mon Aug 24 22:16:01 2015 -0700 @@ -265,6 +265,9 @@ remote refs are converted as bookmarks with "convert.git.remoteprefix" as a prefix followed by a /. The default is 'remote'. + convert.git.skipsubmodules + does not convert root level .gitmodules files or files with + 160000 mode indicating a submodule. Default is False. Perforce Source ###############