mirror of
https://gerrit.googlesource.com/git-repo
synced 2025-07-02 20:17:19 +00:00
Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
ff0a3c8f80 | |||
094cdbe090 | |||
148a84de0c | |||
1c5da49e6c | |||
b8433dfd2f | |||
f2fe2d9b86 |
@ -21,6 +21,7 @@ import tempfile
|
|||||||
from signal import SIGTERM
|
from signal import SIGTERM
|
||||||
from error import GitError
|
from error import GitError
|
||||||
from trace import REPO_TRACE, IsTrace, Trace
|
from trace import REPO_TRACE, IsTrace, Trace
|
||||||
|
from wrapper import Wrapper
|
||||||
|
|
||||||
GIT = 'git'
|
GIT = 'git'
|
||||||
MIN_GIT_VERSION = (1, 5, 4)
|
MIN_GIT_VERSION = (1, 5, 4)
|
||||||
@ -84,15 +85,10 @@ class _GitCall(object):
|
|||||||
|
|
||||||
def version_tuple(self):
|
def version_tuple(self):
|
||||||
global _git_version
|
global _git_version
|
||||||
|
|
||||||
if _git_version is None:
|
if _git_version is None:
|
||||||
ver_str = git.version().decode('utf-8')
|
ver_str = git.version().decode('utf-8')
|
||||||
if ver_str.startswith('git version '):
|
_git_version = Wrapper().ParseGitVersion(ver_str)
|
||||||
_git_version = tuple(
|
if _git_version is None:
|
||||||
map(int,
|
|
||||||
ver_str[len('git version '):].strip().split('-')[0].split('.')[0:3]
|
|
||||||
))
|
|
||||||
else:
|
|
||||||
print('fatal: "%s" unsupported' % ver_str, file=sys.stderr)
|
print('fatal: "%s" unsupported' % ver_str, file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
return _git_version
|
return _git_version
|
||||||
|
20
main.py
20
main.py
@ -46,6 +46,7 @@ from error import NoSuchProjectError
|
|||||||
from error import RepoChangedException
|
from error import RepoChangedException
|
||||||
from manifest_xml import XmlManifest
|
from manifest_xml import XmlManifest
|
||||||
from pager import RunPager
|
from pager import RunPager
|
||||||
|
from wrapper import WrapperPath, Wrapper
|
||||||
|
|
||||||
from subcmds import all_commands
|
from subcmds import all_commands
|
||||||
|
|
||||||
@ -169,21 +170,10 @@ class _Repo(object):
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _MyRepoPath():
|
def _MyRepoPath():
|
||||||
return os.path.dirname(__file__)
|
return os.path.dirname(__file__)
|
||||||
|
|
||||||
def _MyWrapperPath():
|
|
||||||
return os.path.join(os.path.dirname(__file__), 'repo')
|
|
||||||
|
|
||||||
_wrapper_module = None
|
|
||||||
def WrapperModule():
|
|
||||||
global _wrapper_module
|
|
||||||
if not _wrapper_module:
|
|
||||||
_wrapper_module = imp.load_source('wrapper', _MyWrapperPath())
|
|
||||||
return _wrapper_module
|
|
||||||
|
|
||||||
def _CurrentWrapperVersion():
|
|
||||||
return WrapperModule().VERSION
|
|
||||||
|
|
||||||
def _CheckWrapperVersion(ver, repo_path):
|
def _CheckWrapperVersion(ver, repo_path):
|
||||||
if not repo_path:
|
if not repo_path:
|
||||||
@ -193,7 +183,7 @@ def _CheckWrapperVersion(ver, repo_path):
|
|||||||
print('no --wrapper-version argument', file=sys.stderr)
|
print('no --wrapper-version argument', file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
exp = _CurrentWrapperVersion()
|
exp = Wrapper().VERSION
|
||||||
ver = tuple(map(int, ver.split('.')))
|
ver = tuple(map(int, ver.split('.')))
|
||||||
if len(ver) == 1:
|
if len(ver) == 1:
|
||||||
ver = (0, ver[0])
|
ver = (0, ver[0])
|
||||||
@ -205,7 +195,7 @@ def _CheckWrapperVersion(ver, repo_path):
|
|||||||
!!! You must upgrade before you can continue: !!!
|
!!! You must upgrade before you can continue: !!!
|
||||||
|
|
||||||
cp %s %s
|
cp %s %s
|
||||||
""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr)
|
""" % (exp_str, WrapperPath(), repo_path), file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if exp > ver:
|
if exp > ver:
|
||||||
@ -214,7 +204,7 @@ def _CheckWrapperVersion(ver, repo_path):
|
|||||||
... You should upgrade soon:
|
... You should upgrade soon:
|
||||||
|
|
||||||
cp %s %s
|
cp %s %s
|
||||||
""" % (exp_str, _MyWrapperPath(), repo_path), file=sys.stderr)
|
""" % (exp_str, WrapperPath(), repo_path), file=sys.stderr)
|
||||||
|
|
||||||
def _CheckRepoDir(repo_dir):
|
def _CheckRepoDir(repo_dir):
|
||||||
if not repo_dir:
|
if not repo_dir:
|
||||||
|
@ -519,12 +519,15 @@ class XmlManifest(object):
|
|||||||
self._repo_hooks_project.enabled_repo_hooks = enabled_repo_hooks
|
self._repo_hooks_project.enabled_repo_hooks = enabled_repo_hooks
|
||||||
if node.nodeName == 'remove-project':
|
if node.nodeName == 'remove-project':
|
||||||
name = self._reqatt(node, 'name')
|
name = self._reqatt(node, 'name')
|
||||||
try:
|
|
||||||
del self._projects[name]
|
if name not in self._projects:
|
||||||
except KeyError:
|
|
||||||
raise ManifestParseError('remove-project element specifies non-existent '
|
raise ManifestParseError('remove-project element specifies non-existent '
|
||||||
'project: %s' % name)
|
'project: %s' % name)
|
||||||
|
|
||||||
|
for p in self._projects[name]:
|
||||||
|
del self._paths[p.relpath]
|
||||||
|
del self._projects[name]
|
||||||
|
|
||||||
# If the manifest removes the hooks project, treat it as if it deleted
|
# If the manifest removes the hooks project, treat it as if it deleted
|
||||||
# the repo-hooks element too.
|
# the repo-hooks element too.
|
||||||
if self._repo_hooks_project and (self._repo_hooks_project.name == name):
|
if self._repo_hooks_project and (self._repo_hooks_project.name == name):
|
||||||
|
19
repo
19
repo
@ -278,6 +278,20 @@ def _Init(args):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
def ParseGitVersion(ver_str):
|
||||||
|
if not ver_str.startswith('git version '):
|
||||||
|
return None
|
||||||
|
|
||||||
|
num_ver_str = ver_str[len('git version '):].strip().split('-')[0]
|
||||||
|
to_tuple = []
|
||||||
|
for num_str in num_ver_str.split('.')[:3]:
|
||||||
|
if num_str.isdigit():
|
||||||
|
to_tuple.append(int(num_str))
|
||||||
|
else:
|
||||||
|
to_tuple.append(0)
|
||||||
|
return tuple(to_tuple)
|
||||||
|
|
||||||
|
|
||||||
def _CheckGitVersion():
|
def _CheckGitVersion():
|
||||||
cmd = [GIT, '--version']
|
cmd = [GIT, '--version']
|
||||||
try:
|
try:
|
||||||
@ -295,12 +309,11 @@ def _CheckGitVersion():
|
|||||||
proc.stdout.close()
|
proc.stdout.close()
|
||||||
proc.wait()
|
proc.wait()
|
||||||
|
|
||||||
if not ver_str.startswith('git version '):
|
ver_act = ParseGitVersion(ver_str)
|
||||||
|
if ver_act is None:
|
||||||
_print('error: "%s" unsupported' % ver_str, file=sys.stderr)
|
_print('error: "%s" unsupported' % ver_str, file=sys.stderr)
|
||||||
raise CloneFailure()
|
raise CloneFailure()
|
||||||
|
|
||||||
ver_str = ver_str[len('git version '):].strip()
|
|
||||||
ver_act = tuple(map(int, ver_str.split('.')[0:3]))
|
|
||||||
if ver_act < MIN_GIT_VERSION:
|
if ver_act < MIN_GIT_VERSION:
|
||||||
need = '.'.join(map(str, MIN_GIT_VERSION))
|
need = '.'.join(map(str, MIN_GIT_VERSION))
|
||||||
_print('fatal: git %s or later required' % need, file=sys.stderr)
|
_print('fatal: git %s or later required' % need, file=sys.stderr)
|
||||||
|
@ -58,13 +58,13 @@ except ImportError:
|
|||||||
|
|
||||||
from git_command import GIT, git_require
|
from git_command import GIT, git_require
|
||||||
from git_refs import R_HEADS, HEAD
|
from git_refs import R_HEADS, HEAD
|
||||||
from main import WrapperModule
|
|
||||||
from project import Project
|
from project import Project
|
||||||
from project import RemoteSpec
|
from project import RemoteSpec
|
||||||
from command import Command, MirrorSafeCommand
|
from command import Command, MirrorSafeCommand
|
||||||
from error import RepoChangedException, GitError, ManifestParseError
|
from error import RepoChangedException, GitError, ManifestParseError
|
||||||
from project import SyncBuffer
|
from project import SyncBuffer
|
||||||
from progress import Progress
|
from progress import Progress
|
||||||
|
from wrapper import Wrapper
|
||||||
|
|
||||||
_ONE_DAY_S = 24 * 60 * 60
|
_ONE_DAY_S = 24 * 60 * 60
|
||||||
|
|
||||||
@ -699,10 +699,10 @@ later is required to fix a server side protocol bug.
|
|||||||
print(self.manifest.notice)
|
print(self.manifest.notice)
|
||||||
|
|
||||||
def _PostRepoUpgrade(manifest, quiet=False):
|
def _PostRepoUpgrade(manifest, quiet=False):
|
||||||
wrapper = WrapperModule()
|
wrapper = Wrapper()
|
||||||
if wrapper.NeedSetupGnuPG():
|
if wrapper.NeedSetupGnuPG():
|
||||||
wrapper.SetupGnuPG(quiet)
|
wrapper.SetupGnuPG(quiet)
|
||||||
for project in manifest.projects.values():
|
for project in manifest.projects:
|
||||||
if project.Exists:
|
if project.Exists:
|
||||||
project.PostRepoUpgrade()
|
project.PostRepoUpgrade()
|
||||||
|
|
||||||
|
30
wrapper.py
Normal file
30
wrapper.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 The Android Open Source Project
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
import imp
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
def WrapperPath():
|
||||||
|
return os.path.join(os.path.dirname(__file__), 'repo')
|
||||||
|
|
||||||
|
_wrapper_module = None
|
||||||
|
def Wrapper():
|
||||||
|
global _wrapper_module
|
||||||
|
if not _wrapper_module:
|
||||||
|
_wrapper_module = imp.load_source('wrapper', WrapperPath())
|
||||||
|
return _wrapper_module
|
Reference in New Issue
Block a user