Hi Daniel,
thanks for your patch. Some more comments below:

On Thu, Apr 19, 2012 at 11:13:37PM +0200, Daniel Dehennin wrote:
[..snip..] 
> diff --git a/gbp/scripts/dch.py b/gbp/scripts/dch.py
> index 3a4a02a..44a4892 100644
> --- a/gbp/scripts/dch.py
> +++ b/gbp/scripts/dch.py
> @@ -75,6 +75,11 @@ def spawn_dch(msg=[], author=None, email=None, 
> newversion=False, version=None,
>      if author and email:
>          env = """DEBFULLNAME="%s" DEBEMAIL="%s" """ % (author, email)
>  
> +    if dch_options.find(" --create") != -1:
> +        env += """ EDITOR=/bin/true"""
> +        # Should be lower than anything?
> +        dch_options += """ --newversion=0~~~~~"""
> +

We need to try harder to find a sane version here. E.g. from the
upstream tag.

>      if distribution:
>          distopt = "--distribution=%s" % distribution
>  
> @@ -97,6 +102,17 @@ def spawn_dch(msg=[], author=None, email=None, 
> newversion=False, version=None,
>          os.rename("debian/changelog.bak", "debian/changelog")
>  
>  
> +def create_empty_changelog(changelog, repo, options):
> +    """Create an empty changelog file"""
> +    spawn_dch(dch_options=" --create --empty")
> +    cp = ChangeLog(filename=changelog)
> +    if not options.new_version:
> +        cp['MangledVersion'] = guess_version_from_upstream(repo, 
> options.upstream_tag, cp)
> +    else:
> +        cp['MangledVersion'] = options.new_version
> +    mangle_changelog(changelog, cp)
> +    return ChangeLog(filename=changelog)
> +

This should rather be a classmethod on deb.changelog (see e.g.
gbp.git.Repository.create. This was we can easily test this method and
reuse it elsewhere.

>  def add_changelog_entry(msg, author, email, dch_options):
>      """Add a single changelog entry"""
>      spawn_dch(msg=msg, author=author, email=email, dch_options=dch_options)
> @@ -416,7 +432,13 @@ def main(argv):
>              gbp.log.err("You are not on branch '%s' but on '%s'" % 
> (options.debian_branch, branch))
>              raise GbpError, "Use --ignore-branch to ignore or 
> --debian-branch to set the branch name."
>  
> -        cp = ChangeLog(filename=changelog)
> +        created_cp = False
> +        try:
> +            cp = ChangeLog(filename=changelog)
> +        except NoChangeLogError, err:
> +            gbp.log.info("No debian/changelog: create a new one")
> +            cp = create_empty_changelog(changelog, repo, options)
> +            created_cp = True

We don't need created_cp if we have create a real ChangeLog object (see
above).

>  
>          if options.since:
>              since = options.since
> @@ -429,7 +451,7 @@ def main(argv):
>                      found_snapshot_header = True
>                  else:
>                      gbp.log.info("Couldn't find snapshot header, using 
> version info")
> -            if not since:
> +            if not created_cp and not since:

If we get the above right repo.find_versions should return nothing and
be a noop so we can leave out the comparision.

>                  since = repo.find_version(options.debian_tag, cp['Version'])
>                  if not since:
>                      raise GbpError, "Version %s not found" % cp['Version']
> @@ -441,7 +463,7 @@ def main(argv):
>          commits.reverse()
>  
>          # add a new changelog section if:
> -        if options.new_version or options.bpo or options.nmu or options.qa:
> +        if not created_cp and (options.new_version or options.bpo or 
> options.nmu or options.qa):

Don't we want to honor these options?

>              if options.bpo:
>                  version_change['increment'] = '--bpo'
>              elif  options.nmu:

> Footnotes: 
> [1]  I need to look at how to add a test in the test suit

Great. The above comments should make it easier.
Cheers,
 -- Guido

> 
> -- 
> Daniel Dehennin
> Récupérer ma clef GPG:
> gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF






--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to