summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md7
-rw-r--r--VERSION2
-rw-r--r--doc/source/changes.rst12
-rw-r--r--doc/source/tutorial.rst9
-rw-r--r--git/diff.py14
m---------git/ext/gitdb0
-rw-r--r--git/refs/symbolic.py2
-rw-r--r--git/repo/base.py6
-rw-r--r--git/test/fixtures/diff_abbrev-40_full-index_M_raw_no-color1
-rw-r--r--git/test/test_diff.py9
-rw-r--r--git/test/test_repo.py2
11 files changed, 44 insertions, 20 deletions
diff --git a/README.md b/README.md
index 85983f0d..ad2aa4fc 100644
--- a/README.md
+++ b/README.md
@@ -18,9 +18,6 @@ The list of dependencies are listed in `./requirements.txt` and `./test-requirem
### INSTALL
-[![Latest Version](https://pypip.in/version/GitPython/badge.svg)](https://pypi.python.org/pypi/GitPython/)
-[![Supported Python Versions](https://pypip.in/py_versions/GitPython/badge.svg)](https://pypi.python.org/pypi/GitPython/)
-
If you have downloaded the source code:
python setup.py install
@@ -101,8 +98,6 @@ New BSD License. See the LICENSE file.
[![Build Status](https://travis-ci.org/gitpython-developers/GitPython.svg)](https://travis-ci.org/gitpython-developers/GitPython)
[![Code Climate](https://codeclimate.com/github/gitpython-developers/GitPython/badges/gpa.svg)](https://codeclimate.com/github/gitpython-developers/GitPython)
[![Documentation Status](https://readthedocs.org/projects/gitpython/badge/?version=stable)](https://readthedocs.org/projects/gitpython/?badge=stable)
-[![Issue Stats](http://www.issuestats.com/github/gitpython-developers/GitPython/badge/pr)](http://www.issuestats.com/github/gitpython-developers/GitPython)
-[![Issue Stats](http://www.issuestats.com/github/gitpython-developers/GitPython/badge/issue)](http://www.issuestats.com/github/gitpython-developers/GitPython)
Now that there seems to be a massive user base, this should be motivation enough to let git-python return to a proper state, which means
@@ -111,4 +106,4 @@ Now that there seems to be a massive user base, this should be motivation enough
[twitch-channel]: http://www.twitch.tv/byronimo/profile
[youtube-playlist]: https://www.youtube.com/playlist?list=PLMHbQxe1e9MnoEcLhn6Yhv5KAvpWkJbL0
-[contributing]: https://github.com/gitpython-developers/GitPython/blob/master/README.md \ No newline at end of file
+[contributing]: https://github.com/gitpython-developers/GitPython/blob/master/README.md
diff --git a/VERSION b/VERSION
index 2c403d06..f752945d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.7dev0
+2.0.8dev0
diff --git a/doc/source/changes.rst b/doc/source/changes.rst
index 428fa2b4..9f8ebb51 100644
--- a/doc/source/changes.rst
+++ b/doc/source/changes.rst
@@ -2,6 +2,18 @@
Changelog
=========
+2.0.8 - Bugfixes
+================
+
+* `DiffIndex.iter_change_type(...)` produces better results when diffing
+ an index against the working tree.
+
+2.0.7 - New Features
+====================
+
+* `IndexFile.commit(...,skip_hooks=False)` added. This parameter emulates the
+ behaviour of `--no-verify` on the command-line.
+
2.0.6 - Fixes and Features
==========================
diff --git a/doc/source/tutorial.rst b/doc/source/tutorial.rst
index b0ef273d..92020975 100644
--- a/doc/source/tutorial.rst
+++ b/doc/source/tutorial.rst
@@ -474,8 +474,13 @@ Using environment variables, you can further adjust the behaviour of the git com
* **GIT_PYTHON_TRACE**
- * If set to non-0, all executed git commands will be logged using a python logger.
- * if set to *full*, the executed git command and its output on stdout and stderr will be logged using a python logger.
+ * If set to non-0, all executed git commands will be shown as they happen
+ * If set to *full*, the executed git command _and_ its entire output on stdout and stderr will be shown as they happen
+
+ **NOTE**: All logging is outputted using a Python logger, so make sure your program is configured to show INFO-level messages. If this is not the case, try adding the following to your program::
+
+ import logging
+ logging.basicConfig(level=logging.INFO)
* **GIT_PYTHON_GIT_EXECUTABLE**
diff --git a/git/diff.py b/git/diff.py
index 06193920..fb8faaf6 100644
--- a/git/diff.py
+++ b/git/diff.py
@@ -183,7 +183,9 @@ class DiffIndex(list):
raise ValueError("Invalid change type: %s" % change_type)
for diff in self:
- if change_type == "A" and diff.new_file:
+ if diff.change_type == change_type:
+ yield diff
+ elif change_type == "A" and diff.new_file:
yield diff
elif change_type == "D" and diff.deleted_file:
yield diff
@@ -247,11 +249,12 @@ class Diff(object):
NULL_BIN_SHA = b"\0" * 20
__slots__ = ("a_blob", "b_blob", "a_mode", "b_mode", "a_rawpath", "b_rawpath",
- "new_file", "deleted_file", "raw_rename_from", "raw_rename_to", "diff")
+ "new_file", "deleted_file", "raw_rename_from", "raw_rename_to",
+ "diff", "change_type")
def __init__(self, repo, a_rawpath, b_rawpath, a_blob_id, b_blob_id, a_mode,
b_mode, new_file, deleted_file, raw_rename_from,
- raw_rename_to, diff):
+ raw_rename_to, diff, change_type):
self.a_mode = a_mode
self.b_mode = b_mode
@@ -286,6 +289,7 @@ class Diff(object):
self.raw_rename_to = raw_rename_to or None
self.diff = diff
+ self.change_type = change_type
def __eq__(self, other):
for name in self.__slots__:
@@ -435,7 +439,7 @@ class Diff(object):
new_file, deleted_file,
rename_from,
rename_to,
- None))
+ None, None))
previous_header = header
# end for each header we parse
@@ -483,7 +487,7 @@ class Diff(object):
# END add/remove handling
diff = Diff(repo, a_path, b_path, a_blob_id, b_blob_id, old_mode, new_mode,
- new_file, deleted_file, rename_from, rename_to, '')
+ new_file, deleted_file, rename_from, rename_to, '', change_type)
index.append(diff)
# END for each line
diff --git a/git/ext/gitdb b/git/ext/gitdb
-Subproject d1996e04dbf4841b853b60c1365f0f5fd28d170
+Subproject 2389b75280efb1a63e6ea578eae7f897fd4beb1
diff --git a/git/refs/symbolic.py b/git/refs/symbolic.py
index ae67a7ee..ec2944c6 100644
--- a/git/refs/symbolic.py
+++ b/git/refs/symbolic.py
@@ -313,7 +313,7 @@ class SymbolicReference(object):
lfd = LockedFD(fpath)
fd = lfd.open(write=True, stream=True)
- fd.write(write_value.encode('ascii'))
+ fd.write(write_value.encode('ascii') + b'\n')
lfd.commit()
# Adjust the reflog
diff --git a/git/repo/base.py b/git/repo/base.py
index 282dfc15..61864060 100644
--- a/git/repo/base.py
+++ b/git/repo/base.py
@@ -714,8 +714,7 @@ class Repo(object):
authored_date=int(props[b'author-time']),
committer=Actor(safe_decode(props[b'committer']),
safe_decode(props[b'committer-mail'].lstrip(b'<').rstrip(b'>'))),
- committed_date=int(props[b'committer-time']),
- message=safe_decode(props[b'summary']))
+ committed_date=int(props[b'committer-time']))
commits[hexsha] = c
else:
# Discard the next line (it's a filename end tag)
@@ -815,8 +814,7 @@ class Repo(object):
authored_date=info['author_date'],
committer=Actor._from_string(
info['committer'] + ' ' + info['committer_email']),
- committed_date=info['committer_date'],
- message=info['summary'])
+ committed_date=info['committer_date'])
commits[sha] = c
# END if commit objects needs initial creation
if not is_binary:
diff --git a/git/test/fixtures/diff_abbrev-40_full-index_M_raw_no-color b/git/test/fixtures/diff_abbrev-40_full-index_M_raw_no-color
new file mode 100644
index 00000000..dad85c68
--- /dev/null
+++ b/git/test/fixtures/diff_abbrev-40_full-index_M_raw_no-color
@@ -0,0 +1 @@
+:100644 100644 739bc65220ad90e9ebfa2d6af1723b97555569a4 0000000000000000000000000000000000000000 M README.md
diff --git a/git/test/test_diff.py b/git/test/test_diff.py
index ba0d2d13..9fdb26a2 100644
--- a/git/test/test_diff.py
+++ b/git/test/test_diff.py
@@ -104,6 +104,15 @@ class TestDiff(TestBase):
assert diff.rename_to == 'that'
assert len(list(diffs.iter_change_type('R'))) == 1
+ def test_diff_of_modified_files_not_added_to_the_index(self):
+ output = StringProcessAdapter(fixture('diff_abbrev-40_full-index_M_raw_no-color'))
+ diffs = Diff._index_from_raw_format(self.rorepo, output.stdout)
+
+ assert len(diffs) == 1, 'one modification'
+ assert len(list(diffs.iter_change_type('M'))) == 1, 'one modification'
+ assert diffs[0].change_type == 'M'
+ assert diffs[0].b_blob is None
+
def test_binary_diff(self):
for method, file_name in ((Diff._index_from_patch_format, 'diff_patch_binary'),
(Diff._index_from_raw_format, 'diff_raw_binary')):
diff --git a/git/test/test_repo.py b/git/test/test_repo.py
index fc8125fa..87887bad 100644
--- a/git/test/test_repo.py
+++ b/git/test/test_repo.py
@@ -307,7 +307,7 @@ class TestRepo(TestBase):
assert_equal('Tom Preston-Werner', c.committer.name)
assert_equal('tom@mojombo.com', c.committer.email)
assert_equal(1191997100, c.committed_date)
- assert_equal('initial grit setup', c.message)
+ self.assertRaisesRegexp(ValueError, "634396b2f541a9f2d58b00be1a07f0c358b999b3 missing", lambda: c.message)
# test the 'lines per commit' entries
tlist = b[0][1]