mirror of
https://gerrit.googlesource.com/git-repo
synced 2024-12-21 07:16:21 +00:00
init: add an option --enable-git-lfs-filter
It was reported that git-lfs did not work with git-repo. Specifically, `git read-tree -u` run by `repo sync` would fail git-lfs's smudge filter. See https://github.com/github/git-lfs/issues/1422. In fact, by the time `git read-tree -u` is run, the repository is not bare. It is just that, the working directory is not the same as the .git directory. git-lfs's filter should work. No one seems to have delved into that issue. Today, with newer versions of git-repo and git-lfs, that issue will not reproduce. Tested with - git 2.33, git-lfs 2.13 on macOS - git 2.17, git-lfs 2.3 on ubuntu So, it seems fine to add an option --enable-git-lfs-filter, default to false, and stat that it may not work with older versions of git and git-lfs in the help doc. Bug: https://crbug.com/gerrit/14516 Change-Id: I8d21854eeeea541e072f63d6b10ad1253b1a9826 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/328359 Tested-by: XD Trol <milestonejxd@gmail.com> Reviewed-by: Mike Frysinger <vapier@google.com>
This commit is contained in:
parent
4aa8584ec6
commit
630876f9e4
@ -163,6 +163,7 @@ User controlled settings are initialized when running `repo init`.
|
|||||||
| repo.clonefilter | `--clone-filter` | Filter setting when using [partial git clones] |
|
| repo.clonefilter | `--clone-filter` | Filter setting when using [partial git clones] |
|
||||||
| repo.depth | `--depth` | Create shallow checkouts when cloning |
|
| repo.depth | `--depth` | Create shallow checkouts when cloning |
|
||||||
| repo.dissociate | `--dissociate` | Dissociate from any reference/mirrors after initial clone |
|
| repo.dissociate | `--dissociate` | Dissociate from any reference/mirrors after initial clone |
|
||||||
|
| repo.git-lfs | `--git-lfs` | Enable [Git LFS] support |
|
||||||
| repo.mirror | `--mirror` | Checkout is a repo mirror |
|
| repo.mirror | `--mirror` | Checkout is a repo mirror |
|
||||||
| repo.partialclone | `--partial-clone` | Create [partial git clones] |
|
| repo.partialclone | `--partial-clone` | Create [partial git clones] |
|
||||||
| repo.partialcloneexclude | `--partial-clone-exclude` | Comma-delimited list of project names (not paths) to exclude while using [partial git clones] |
|
| repo.partialcloneexclude | `--partial-clone-exclude` | Comma-delimited list of project names (not paths) to exclude while using [partial git clones] |
|
||||||
@ -254,6 +255,7 @@ Repo will create & maintain a few files in the user's home directory.
|
|||||||
|
|
||||||
|
|
||||||
[git-config]: https://git-scm.com/docs/git-config
|
[git-config]: https://git-scm.com/docs/git-config
|
||||||
|
[Git LFS]: https://git-lfs.github.com/
|
||||||
[git worktree]: https://git-scm.com/docs/git-worktree
|
[git worktree]: https://git-scm.com/docs/git-worktree
|
||||||
[gitsubmodules]: https://git-scm.com/docs/gitsubmodules
|
[gitsubmodules]: https://git-scm.com/docs/gitsubmodules
|
||||||
[manifest-format.md]: ./manifest-format.md
|
[manifest-format.md]: ./manifest-format.md
|
||||||
|
@ -666,6 +666,10 @@ https://gerrit.googlesource.com/git-repo/+/HEAD/docs/manifest-format.md
|
|||||||
def HasSubmodules(self):
|
def HasSubmodules(self):
|
||||||
return self.manifestProject.config.GetBoolean('repo.submodules')
|
return self.manifestProject.config.GetBoolean('repo.submodules')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def EnableGitLfs(self):
|
||||||
|
return self.manifestProject.config.GetBoolean('repo.git-lfs')
|
||||||
|
|
||||||
def GetDefaultGroupsStr(self):
|
def GetDefaultGroupsStr(self):
|
||||||
"""Returns the default group string for the platform."""
|
"""Returns the default group string for the platform."""
|
||||||
return 'default,platform-' + platform.system().lower()
|
return 'default,platform-' + platform.system().lower()
|
||||||
|
@ -2533,8 +2533,9 @@ class Project(object):
|
|||||||
for key in ['user.name', 'user.email']:
|
for key in ['user.name', 'user.email']:
|
||||||
if m.Has(key, include_defaults=False):
|
if m.Has(key, include_defaults=False):
|
||||||
self.config.SetString(key, m.GetString(key))
|
self.config.SetString(key, m.GetString(key))
|
||||||
self.config.SetString('filter.lfs.smudge', 'git-lfs smudge --skip -- %f')
|
if not self.manifest.EnableGitLfs:
|
||||||
self.config.SetString('filter.lfs.process', 'git-lfs filter-process --skip')
|
self.config.SetString('filter.lfs.smudge', 'git-lfs smudge --skip -- %f')
|
||||||
|
self.config.SetString('filter.lfs.process', 'git-lfs filter-process --skip')
|
||||||
self.config.SetBoolean('core.bare', True if self.manifest.IsMirror else None)
|
self.config.SetBoolean('core.bare', True if self.manifest.IsMirror else None)
|
||||||
except Exception:
|
except Exception:
|
||||||
if init_obj_dir and os.path.exists(self.objdir):
|
if init_obj_dir and os.path.exists(self.objdir):
|
||||||
|
7
repo
7
repo
@ -149,7 +149,7 @@ if not REPO_REV:
|
|||||||
BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue'
|
BUG_URL = 'https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue'
|
||||||
|
|
||||||
# increment this whenever we make important changes to this script
|
# increment this whenever we make important changes to this script
|
||||||
VERSION = (2, 17)
|
VERSION = (2, 21)
|
||||||
|
|
||||||
# increment this if the MAINTAINER_KEYS block is modified
|
# increment this if the MAINTAINER_KEYS block is modified
|
||||||
KEYRING_VERSION = (2, 3)
|
KEYRING_VERSION = (2, 3)
|
||||||
@ -382,6 +382,11 @@ def InitParser(parser, gitc_init=False):
|
|||||||
group.add_option('--no-clone-bundle',
|
group.add_option('--no-clone-bundle',
|
||||||
dest='clone_bundle', action='store_false',
|
dest='clone_bundle', action='store_false',
|
||||||
help='disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)')
|
help='disable use of /clone.bundle on HTTP/HTTPS (default if --partial-clone)')
|
||||||
|
group.add_option('--git-lfs', action='store_true',
|
||||||
|
help='enable Git LFS support')
|
||||||
|
group.add_option('--no-git-lfs',
|
||||||
|
dest='git_lfs', action='store_false',
|
||||||
|
help='disable Git LFS support')
|
||||||
|
|
||||||
# Tool.
|
# Tool.
|
||||||
group = parser.add_option_group('repo Version options')
|
group = parser.add_option_group('repo Version options')
|
||||||
|
@ -291,6 +291,15 @@ to update the working directory files.
|
|||||||
if opt.submodules:
|
if opt.submodules:
|
||||||
m.config.SetBoolean('repo.submodules', opt.submodules)
|
m.config.SetBoolean('repo.submodules', opt.submodules)
|
||||||
|
|
||||||
|
if opt.git_lfs is not None:
|
||||||
|
if opt.git_lfs:
|
||||||
|
git_require((2, 17, 0), fail=True, msg='Git LFS support')
|
||||||
|
|
||||||
|
m.config.SetBoolean('repo.git-lfs', opt.git_lfs)
|
||||||
|
if not is_new:
|
||||||
|
print('warning: Changing --git-lfs settings will only affect new project checkouts.\n'
|
||||||
|
' Existing projects will require manual updates.\n', file=sys.stderr)
|
||||||
|
|
||||||
if opt.use_superproject is not None:
|
if opt.use_superproject is not None:
|
||||||
m.config.SetBoolean('repo.superproject', opt.use_superproject)
|
m.config.SetBoolean('repo.superproject', opt.use_superproject)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user