diff --git a/docs/changelog.rst b/docs/changelog.rst --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -30,6 +30,7 @@ fixes - fixed no scm found warning - fixed __future__ import error on rcextensions - made simplejson required lib for speedup on JSON encoding +- fixes #449 bad regex could get more than revisions from parsing history 1.3.5 (**2012-05-10**) ---------------------- diff --git a/rhodecode/lib/vcs/backends/git/changeset.py b/rhodecode/lib/vcs/backends/git/changeset.py --- a/rhodecode/lib/vcs/backends/git/changeset.py +++ b/rhodecode/lib/vcs/backends/git/changeset.py @@ -240,11 +240,11 @@ class GitChangeset(BaseChangeset): which is generally not good. Should be replaced with algorithm iterating commits. """ - cmd = 'log --pretty="format: %%H" --name-status -p %s -- "%s"' % ( + cmd = 'log --pretty="format: --%%H--" --name-status -p %s -- "%s"' % ( self.id, path ) so, se = self.repository.run_git_command(cmd) - ids = re.findall(r'\w{40}', so) + ids = re.findall(r'(?:--)(\w{40})(?:--)', so) return [self.repository.get_changeset(id) for id in ids] def get_file_annotate(self, path):