tags 700411 patch thanks On 12/02/13 14:37, Raphaël Hertzog wrote: > > git-import-orig will happily import upstream tarballs that contain a > debian directory and when the upstream debian dir changes, git-import-orig > will try to merge those changes in the real debian packaging available on > the master branch. > > In the best case, it fails, in the worst case it leads to indesirable > changes. > > I tried to work-around this problem with --filter='debian/*' but there's > no safe pattern to use... because this one will also strip > "src/plugins/debian" from the upstream tarball and we don't really want > this by default. > > So I would suggest that git-import-orig should automatically remove the > top-level "debian" directory when it does its work. > > I'm not sure how git-import-dsc behaves in the same situation but it > should probably adjust its behaviour depending on the source format. > With 3.0 (quilt), you want this behaviour since the debian directory > is always coming from a separate tarball and thus both debian directories > are entirely unrelated. With "3.0 (native)" you want to keep the debian > directory because it only exists in the upstream tarball. With "1.0" it > depends... >
Hi! I have been also affected by this issue. I have cooked a patch to fix this. It checks if the unpacked upstream tarball contains a "debian/" directory, then it checks if the current package is native or not. If it's not native, then it wipes the debian/ directory from the unpacked upstream tarball before doing the import. The patch attached is against git-buildpackage=0.6.0~git20130414
--- a/gbp/scripts/import_orig.py +++ b/gbp/scripts/import_orig.py @@ -21,11 +21,13 @@ import os import sys import tempfile +import shutil import gbp.command_wrappers as gbpc from gbp.deb import (DebianPkgPolicy, parse_changelog_repo) from gbp.deb.uscan import (Uscan, UscanError) from gbp.deb.changelog import ChangeLog, NoChangeLogError from gbp.deb.git import (GitRepositoryError, DebianGitRepository) +from gbp.deb.source import DebianSource from gbp.config import GbpOptionParserDebian, GbpOptionGroup, no_upstream_branch_msg from gbp.errors import GbpError import gbp.log @@ -283,6 +285,13 @@ tmpdir = tempfile.mkdtemp(dir='../') source.unpack(tmpdir, options.filters) gbp.log.debug("Unpacked '%s' to '%s'" % (source.path, source.unpacked)) + if os.path.isdir("%s" %(os.path.join(source.unpacked,"debian"))): + try: + if not DebianSource('.').is_native(): + shutil.rmtree("%s" %(os.path.join(source.unpacked,"debian"))) + gbp.log.info("Deleted 'debian/' directory from unpacked upstream tarball before import") + except Exception as e: + raise GbpError("Can't determine package type: %s" % e) if source.needs_repack(options): gbp.log.debug("Filter pristine-tar: repacking '%s' from '%s'" % (source.path, source.unpacked))
signature.asc
Description: OpenPGP digital signature