Fixes for a few bugs recently introduced in stgit by yours truly.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalleFixes for a few bugs recently introduced in stgit by yours truly.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalle[PATCH 1/3] Fix infinite recursion on absolute paths
Calling create_dirs with an absolute path caused infinite recursion, since os.path.dirname('/') == '/'. Fix this by exiting early if the given path already is a directory. ---
stgit/utils.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/stgit/utils.py b/stgit/utils.py index 68b8f58..ed6e43c 100644 --- a/stgit/utils.py +++ b/stgit/utils.py @@ -130,7 +130,7 @@ def remove_file_and_dirs(basedir, file): def create_dirs(directory): """Create the given directory, if the path doesn't already exist.""" - if directory: + if directory and not os.path.isdir(directory): create_dirs(os.path.dirname(directory)) try: os.mkdir(directory)
[PATCH 2/3] Fix indexing error during "diff -r/"
The string indexing when decoding the -r argument for diff made an implicit assumption that the revision string was at least two characters long, which broke on the simple invocation "diff -r/". ---
stgit/commands/diff.py | 8 ++++---- stgit/utils.py | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/stgit/commands/diff.py b/stgit/commands/diff.py index d765784..caa3c5b 100644 --- a/stgit/commands/diff.py +++ b/stgit/commands/diff.py @@ -56,11 +56,11 @@ def func(parser, options, args): rev_list_len = len(rev_list) if rev_list_len == 1: rev = rev_list[0] - if rev[-1] == '/': + if rev.endswith('/'): # the whole patch - rev = rev[:-1] - if rev[-1] == '/': - rev = rev[:-1] + rev = strip_suffix('/', rev) + if rev.endswith('/'): + rev = strip_suffix('/', rev) rev1 = rev + '//bottom' rev2 = rev + '//top' else: diff --git a/stgit/utils.py b/stgit/utils.py index ed6e43c..67431ec 100644 --- a/stgit/utils.py +++ b/stgit/utils.py @@ -109,6 +109,12 @@ def strip_prefix(prefix, string): assert string.startswith(prefix) return string[len(prefix):] +def strip_suffix(suffix, string): + """Return string, without the suffix. Blow up if string doesn't + end with suffix.""" + assert string.endswith(suffix) + return string[:-len(suffix)] + def remove_dirs(basedir, dirs): """Starting at join(basedir, dirs), remove the directory if empty, and try the same with its parent, until we find a nonempty
[PATCH 3/3] Explicitly specify utf-8 coding in file
uncommit.py has a non-ascii character in it (in my name in the copyright line). Without this coding: comment, I get an error like the following when I run stgit:
/home/kha/git/stgit/stgit/main.py:61: DeprecationWarning: Non-ASCII character '\xc3' in file /home/kha/git/stgit/stgit/commands/uncommit.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details ---
stgit/commands/uncommit.py | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/stgit/commands/uncommit.py b/stgit/commands/uncommit.py index e03d207..52ce5a8 100644 --- a/stgit/commands/uncommit.py +++ b/stgit/commands/uncommit.py @@ -1,3 +1,5 @@ +# -*- coding: utf-8 -*- + __copyright__ = """ Copyright (C) 2006, Karl Hasselström <kha@treskal.com>
Re: A few stgit bugfixes
Karl Hasselström wrote:
> Fixes for a few bugs recently introduced in stgit by yours truly.
Applied. Thanks,
Catalin