本文整理汇总了Python中gbp.deb.git.DebianGitRepository.force_head方法的典型用法代码示例。如果您正苦于以下问题:Python DebianGitRepository.force_head方法的具体用法?Python DebianGitRepository.force_head怎么用?Python DebianGitRepository.force_head使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gbp.deb.git.DebianGitRepository
的用法示例。
在下文中一共展示了DebianGitRepository.force_head方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
def main(argv):
ret = 0
(options, args) = parse_args(argv)
try:
sources = find_sources(options, args)
if not sources:
return ret
except GbpError as err:
if len(err.__str__()):
gbp.log.err(err)
return 1
try:
try:
repo = DebianGitRepository('.')
except GitRepositoryError:
raise GbpError("%s is not a git repository" % (os.path.abspath('.')))
# an empty repo has no branches:
initial_branch = repo.get_branch()
is_empty = False if initial_branch else True
initial_head = None if is_empty else repo.rev_parse('HEAD', short=40)
(clean, out) = repo.is_clean()
if not clean and not is_empty:
gbp.log.err("Repository has uncommitted changes, commit these first: ")
raise GbpError(out)
if repo.bare:
set_bare_repo_options(options)
# Collect upstream branches, ensuring they're unique and exist if appropriate
upstream_branches = []
for source in sources:
source.detect_name_version_and_component(repo, options)
upstream_branch = options.upstream_branch
if source.component:
upstream_branch += '-' + source.component
if upstream_branch in upstream_branches:
raise GbpError("Duplicate component '%s'" % ( component, ))
if not repo.has_branch(upstream_branch) and not is_empty:
raise GbpError(no_upstream_branch_msg % upstream_branch)
upstream_branches.append(upstream_branch)
# Unpack/repack each source, ensuring that there's no git metadata present
for source in sources:
source.unpack_or_repack_as_necessary(options)
# Import each source into the relevant upstream branch, and create tag
for source in sources:
source.import_into_upstream_branch(repo, options)
# If merge has been requested, merge each upstream branch onto the debian branch
# TODO: what happens if a merge fails?
if options.merge:
for source in sources:
source.merge_into_debian_branch(repo, options)
# If the repository is empty and master isn't the selected debian branch, merge onto master, too
# TODO: what happens if a merge fails?
if is_empty and options.debian_branch != 'master':
options.debian_branch = 'master'
for source in sources:
source.merge_into_debian_branch(repo, options)
# TODO: why is this conditional on merge?
if options.merge and options.postimport:
epoch = ''
repo.set_branch(options.debian_branch)
if os.access('debian/changelog', os.R_OK):
# No need to check the changelog file from the
# repository, since we're certain that we're on
# the debian-branch
cp = ChangeLog(filename='debian/changelog')
if cp.has_epoch():
epoch = '%s:' % cp.epoch
info = { 'version': "%s%s-1" % (epoch, sources[0].version) }
env = { 'GBP_BRANCH': options.debian_branch }
gbpc.Command(options.postimport % info, extra_env=env, shell=True)()
if not is_empty:
# Restore the working copy to the pre-import state
current_head = repo.rev_parse('HEAD', short=40)
if current_head != initial_head:
repo.force_head(initial_head, hard=True)
except (gbpc.CommandExecFailed, GbpError) as err:
if len(err.__str__()):
gbp.log.err(err)
ret = 1
finally:
for source in sources:
source.cleanup(options)
if not ret:
gbp.log.info("Successfully imported version %s of %s" % (sources[0].version, sources[0].name))
return ret
示例2: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
def main(argv):
ret = 0
tmpdir = ''
pristine_orig = None
linked = False
(options, args) = parse_args(argv)
if not options:
return 1
try:
source = find_source(options.uscan, args)
if not source:
return ret
try:
repo = DebianGitRepository('.')
except GitRepositoryError:
raise GbpError("%s is not a git repository" % (os.path.abspath('.')))
# an empty repo has now branches:
initial_branch = repo.get_branch()
is_empty = False if initial_branch else True
if not repo.has_branch(options.upstream_branch) and not is_empty:
raise GbpError(no_upstream_branch_msg % options.upstream_branch)
(sourcepackage, version) = detect_name_and_version(repo, source, options)
(clean, out) = repo.is_clean()
if not clean and not is_empty:
gbp.log.err("Repository has uncommitted changes, commit these first: ")
raise GbpError(out)
if repo.bare:
set_bare_repo_options(options)
if not source.is_dir():
tmpdir = tempfile.mkdtemp(dir='../')
source.unpack(tmpdir, options.filters)
gbp.log.debug("Unpacked '%s' to '%s'" % (source.path, source.unpacked))
if source.needs_repack(options):
gbp.log.debug("Filter pristine-tar: repacking '%s' from '%s'" % (source.path, source.unpacked))
(source, tmpdir) = repack_source(source, sourcepackage, version, tmpdir, options.filters)
(pristine_orig, linked) = prepare_pristine_tar(source.path,
sourcepackage,
version)
# Don't mess up our repo with git metadata from an upstream tarball
try:
if os.path.isdir(os.path.join(source.unpacked, '.git/')):
raise GbpError("The orig tarball contains .git metadata - giving up.")
except OSError:
pass
try:
upstream_branch = [ options.upstream_branch, 'master' ][is_empty]
filter_msg = ["", " (filtering out %s)"
% options.filters][len(options.filters) > 0]
gbp.log.info("Importing '%s' to branch '%s'%s..." % (source.path,
upstream_branch,
filter_msg))
gbp.log.info("Source package is %s" % sourcepackage)
gbp.log.info("Upstream version is %s" % version)
import_branch = [ options.upstream_branch, None ][is_empty]
msg = upstream_import_commit_msg(options, version)
if options.vcs_tag:
parents = [repo.rev_parse("%s^{}" % options.vcs_tag)]
else:
parents = None
commit = repo.commit_dir(source.unpacked,
msg=msg,
branch=import_branch,
other_parents=parents,
)
if options.pristine_tar:
if pristine_orig:
repo.pristine_tar.commit(pristine_orig, upstream_branch)
else:
gbp.log.warn("'%s' not an archive, skipping pristine-tar" % source.path)
tag = repo.version_to_tag(options.upstream_tag, version)
repo.create_tag(name=tag,
msg="Upstream version %s" % version,
commit=commit,
sign=options.sign_tags,
keyid=options.keyid)
if is_empty:
repo.create_branch(options.upstream_branch, rev=commit)
repo.force_head(options.upstream_branch, hard=True)
elif options.merge:
gbp.log.info("Merging to '%s'" % options.debian_branch)
repo.set_branch(options.debian_branch)
try:
#.........这里部分代码省略.........
示例3: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
#.........这里部分代码省略.........
upstream = DebianUpstreamSource(src.tgz)
upstream.unpack(dirs['tmp'], options.filters)
for (component, tarball) in src.additional_tarballs.items():
gbp.log.info("Found component tarball '%s'" % os.path.basename(tarball))
unpack_component_tarball(upstream.unpacked, component, tarball, options.filters)
format = [(options.upstream_tag, "Upstream"), (options.debian_tag, "Debian")][src.native]
tag = repo.version_to_tag(format[0], src.upstream_version)
msg = "%s version %s" % (format[1], src.upstream_version)
if repo.find_version(options.debian_tag, src.version):
gbp.log.warn("Version %s already imported." % src.version)
if options.allow_same_version:
gbp.log.info("Moving tag of version '%s' since import forced" % src.version)
move_tag_stamp(repo, options.debian_tag, src.version)
else:
raise SkipImport
if not repo.find_version(format[0], src.upstream_version):
gbp.log.info("Tag %s not found, importing %s tarball" % (tag, format[1]))
if is_empty:
branch = None
else:
branch = [options.upstream_branch,
options.debian_branch][src.native]
if not repo.has_branch(branch):
if options.create_missing_branches:
gbp.log.info("Creating missing branch '%s'" % branch)
repo.create_branch(branch)
else:
gbp.log.err(no_upstream_branch_msg % branch +
"\nAlso check the --create-missing-branches option.")
raise GbpError
if src.native:
author = get_author_from_changelog(upstream.unpacked)
committer = get_committer_from_author(author, options)
commit_msg = "Import %s\n%s" % (msg, get_changes(upstream.unpacked,
repo,
is_empty,
options.debian_branch))
else:
author = committer = {}
commit_msg = "Import %s" % msg
commit = repo.commit_dir(upstream.unpacked,
commit_msg,
branch,
author=author,
committer=committer)
if not (src.native and options.skip_debian_tag):
repo.create_tag(name=tag,
msg=msg,
commit=commit,
sign=options.sign_tags,
keyid=options.keyid)
if not src.native:
if is_empty:
repo.create_branch(options.upstream_branch, commit)
if options.pristine_tar:
repo.create_pristinetar_commits(options.upstream_branch,
src.tgz,
src.additional_tarballs.items())
if (not repo.has_branch(options.debian_branch) and
(is_empty or options.create_missing_branches)):
repo.create_branch(options.debian_branch, commit)
if not src.native:
if src.diff or src.deb_tgz:
apply_debian_patch(repo, upstream.unpacked, src, options,
tag, is_empty)
else:
gbp.log.warn("Didn't find a diff to apply.")
if repo.get_branch() == options.debian_branch or is_empty:
# Update HEAD if we modified the checked out branch
repo.force_head(options.debian_branch, hard=True)
except KeyboardInterrupt:
ret = 1
gbp.log.err("Interrupted. Aborting.")
except gbpc.CommandExecFailed:
ret = 1
except GitRepositoryError as msg:
gbp.log.err("Git command failed: %s" % msg)
ret = 1
except GbpError as err:
if str(err):
gbp.log.err(err)
ret = 1
except SkipImport:
skipped = True
finally:
os.chdir(dirs['top'])
for d in ['tmp', 'download']:
if d in dirs:
gbpc.RemoveTree(dirs[d])()
if not ret and not skipped:
gbp.log.info("Version '%s' imported under '%s'" % (src.version, repo.path))
return ret
示例4: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
def main(argv):
dirs = dict(top=os.path.abspath(os.curdir))
needs_repo = False
ret = 1
skipped = False
options, pkg, target = parse_all(argv)
if not options:
return ExitCodes.parse_error
try:
try:
repo = DebianGitRepository('.')
# remember if the was repo initially empty
repo.empty = repo.is_empty()
(clean, out) = repo.is_clean()
if not clean and not repo.empty:
raise GbpError("Repository has uncommitted changes, commit these first: %s" % out)
except GitRepositoryError:
# no repo found, create one
needs_repo = True
if options.download:
dscfile = download_source(pkg,
dirs=dirs,
unauth=options.allow_unauthenticated)
else:
dscfile = pkg
dsc = DscFile.parse(dscfile)
if dsc.pkgformat not in ['1.0', '3.0']:
raise GbpError("Importing %s source format not yet supported." % dsc.pkgformat)
if options.verbose:
print_dsc(dsc)
if needs_repo:
target = target or dsc.pkg
if os.path.exists(target):
raise GbpError("Directory '%s' already exists. If you want to import into it, "
"please change into this directory otherwise move it away first."
% target)
gbp.log.info("No git repository found, creating one.")
repo = DebianGitRepository.create(target)
repo.empty = True
os.chdir(repo.path)
repo_setup.set_user_name_and_email(options.repo_user, options.repo_email, repo)
if repo.bare:
disable_pristine_tar(options, "Bare repository")
# unpack
dirs['tmp'] = os.path.abspath(tempfile.mkdtemp(dir='..'))
source = DebianUpstreamSource(dsc.tgz)
source.unpack(dirs['tmp'], options.filters)
for (component, tarball) in dsc.additional_tarballs.items():
gbp.log.info("Found component tarball '%s'" % os.path.basename(tarball))
unpack_component_tarball(source.unpacked, component, tarball, options.filters)
if repo.find_version(options.debian_tag, dsc.version):
gbp.log.warn("Version %s already imported." % dsc.version)
if options.allow_same_version:
gbp.log.info("Moving tag of version '%s' since import forced" % dsc.version)
move_tag_stamp(repo, options.debian_tag, dsc.version)
else:
raise SkipImport
# import
if dsc.native:
import_native(repo, source, dsc, options)
else:
imported = False
commit = repo.find_version(options.upstream_tag, dsc.upstream_version)
if not repo.find_version(options.upstream_tag, dsc.upstream_version):
commit = import_upstream(repo, source, dsc, options)
imported = True
if not repo.has_branch(options.debian_branch):
if options.create_missing_branches:
repo.create_branch(options.debian_branch, commit)
else:
raise GbpError("Branch %s does not exist, use --create-missing-branches" %
options.debian_branch)
if dsc.diff or dsc.deb_tgz:
apply_debian_patch(repo, source, dsc, commit, options)
else:
gbp.log.warn("Didn't find a diff to apply.")
if imported and options.pristine_tar:
repo.create_pristine_tar_commits(commit,
dsc.tgz,
dsc.additional_tarballs.items())
if repo.get_branch() == options.debian_branch or repo.empty:
# Update HEAD if we modified the checked out branch
repo.force_head(options.debian_branch, hard=True)
ret = 0
except KeyboardInterrupt:
gbp.log.err("Interrupted. Aborting.")
#.........这里部分代码省略.........
示例5: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
#.........这里部分代码省略.........
if needs_repo:
gbp.log.info("No git repository found, creating one.")
repo = DebianGitRepository.create(src.pkg)
os.chdir(repo.path)
if repo.bare:
set_bare_repo_options(options)
dirs['tmp'] = os.path.abspath(tempfile.mkdtemp(dir='..'))
upstream = DebianUpstreamSource(src.tgz)
upstream.unpack(dirs['tmp'], options.filters)
format = [(options.upstream_tag, "Upstream"), (options.debian_tag, "Debian")][src.native]
tag = repo.version_to_tag(format[0], src.upstream_version)
msg = "%s version %s" % (format[1], src.upstream_version)
if repo.find_version(options.debian_tag, src.version):
gbp.log.warn("Version %s already imported." % src.version)
if options.allow_same_version:
gbp.log.info("Moving tag of version '%s' since import forced" % src.version)
move_tag_stamp(repo, options.debian_tag, src.version)
else:
raise SkipImport
if not repo.find_version(format[0], src.upstream_version):
gbp.log.info("Tag %s not found, importing %s tarball" % (tag, format[1]))
if is_empty:
branch = None
else:
branch = [options.upstream_branch,
options.debian_branch][src.native]
if not repo.has_branch(branch):
if options.create_missing_branches:
gbp.log.info("Creating missing branch '%s'" % branch)
repo.create_branch(branch)
else:
gbp.log.err(no_upstream_branch_msg % branch +
"\nAlso check the --create-missing-branches option.")
raise GbpError
if src.native:
author = get_author_from_changelog(upstream.unpacked)
committer = get_committer_from_author(author, options)
else:
author = committer = {}
commit = repo.commit_dir(upstream.unpacked,
"Imported %s" % msg,
branch,
author=author,
committer=committer)
if not (src.native and options.skip_debian_tag):
repo.create_tag(name=tag,
msg=msg,
commit=commit,
sign=options.sign_tags,
keyid=options.keyid)
if not src.native:
if is_empty:
repo.create_branch(options.upstream_branch, commit)
if options.pristine_tar:
repo.pristine_tar.commit(src.tgz, options.upstream_branch)
if (not repo.has_branch(options.debian_branch)
and (is_empty or options.create_missing_branches)):
repo.create_branch(options.debian_branch, commit)
if not src.native:
if src.diff or src.deb_tgz:
apply_debian_patch(repo, upstream.unpacked, src, options,
tag)
else:
gbp.log.warn("Didn't find a diff to apply.")
if repo.get_branch() == options.debian_branch or is_empty:
# Update HEAD if we modified the checked out branch
repo.force_head(options.debian_branch, hard=True)
except KeyboardInterrupt:
ret = 1
gbp.log.err("Interrupted. Aborting.")
except gbpc.CommandExecFailed:
ret = 1
except GitRepositoryError as msg:
gbp.log.err("Git command failed: %s" % msg)
ret = 1
except GbpError as err:
if str(err):
gbp.log.err(err)
ret = 1
except SkipImport:
skipped = True
finally:
os.chdir(dirs['top'])
for d in [ 'tmp', 'download' ]:
if d in dirs:
gbpc.RemoveTree(dirs[d])()
if not ret and not skipped:
gbp.log.info("Version '%s' imported under '%s'" % (src.version, src.pkg))
return ret
示例6: main
# 需要导入模块: from gbp.deb.git import DebianGitRepository [as 别名]
# 或者: from gbp.deb.git.DebianGitRepository import force_head [as 别名]
def main(argv):
ret = 0
tmpdir = ""
pristine_orig = None
linked = False
(options, args) = parse_args(argv)
if not options:
return 1
try:
try:
repo = DebianGitRepository(".")
except GitRepositoryError:
raise GbpError("%s is not a git repository" % (os.path.abspath(".")))
# an empty repo has now branches:
initial_branch = repo.get_branch()
is_empty = False if initial_branch else True
if not repo.has_branch(options.upstream_branch) and not is_empty:
raise GbpError(no_upstream_branch_msg % options.upstream_branch)
(clean, out) = repo.is_clean()
if not clean and not is_empty:
gbp.log.err("Repository has uncommitted changes, commit these first: ")
raise GbpError(out)
# Download the source
if options.download:
source = download_orig(args[0])
else:
source = find_source(options.uscan, args)
if not source:
return ret
(sourcepackage, version) = detect_name_and_version(repo, source, options)
tag = repo.version_to_tag(options.upstream_tag, version)
if repo.has_tag(tag):
raise GbpError("Upstream tag '%s' already exists" % tag)
if repo.bare:
set_bare_repo_options(options)
if not source.is_dir():
tmpdir = tempfile.mkdtemp(dir="../")
source.unpack(tmpdir, options.filters)
gbp.log.debug("Unpacked '%s' to '%s'" % (source.path, source.unpacked))
if orig_needs_repack(source, options):
gbp.log.debug("Filter pristine-tar: repacking '%s' from '%s'" % (source.path, source.unpacked))
(source, tmpdir) = repack_source(source, sourcepackage, version, tmpdir, options.filters)
(pristine_orig, linked) = prepare_pristine_tar(source.path, sourcepackage, version)
# Don't mess up our repo with git metadata from an upstream tarball
try:
if os.path.isdir(os.path.join(source.unpacked, ".git/")):
raise GbpError("The orig tarball contains .git metadata - giving up.")
except OSError:
pass
try:
upstream_branch = [options.upstream_branch, "master"][is_empty]
filter_msg = ["", " (filtering out %s)" % options.filters][len(options.filters) > 0]
gbp.log.info("Importing '%s' to branch '%s'%s..." % (source.path, upstream_branch, filter_msg))
gbp.log.info("Source package is %s" % sourcepackage)
gbp.log.info("Upstream version is %s" % version)
import_branch = [options.upstream_branch, None][is_empty]
msg = upstream_import_commit_msg(options, version)
if options.vcs_tag:
parents = [repo.rev_parse("%s^{}" % repo.version_to_tag(options.vcs_tag, version))]
else:
parents = None
commit = repo.commit_dir(source.unpacked, msg=msg, branch=import_branch, other_parents=parents)
if options.pristine_tar:
if pristine_orig:
repo.pristine_tar.commit(pristine_orig, upstream_branch)
else:
gbp.log.warn("'%s' not an archive, skipping pristine-tar" % source.path)
repo.create_tag(
name=tag,
msg="Upstream version %s" % version,
commit=commit,
sign=options.sign_tags,
keyid=options.keyid,
)
if is_empty:
repo.create_branch(options.upstream_branch, rev=commit)
repo.force_head(options.upstream_branch, hard=True)
if options.debian_branch != "master":
repo.rename_branch("master", options.debian_branch)
elif options.merge:
debian_branch_merge(repo, tag, version, options)
#.........这里部分代码省略.........