I submitted the patch that enabled Mercurial rename support a few years ago. For the most part it works well but there are definitely cases where it doesn't and I haven't been able to pin them all down. I think it may be something to do with whether the original file was added or changed in the parent diff, in which case the master repo may not know about it.

I also know there's a bug where if a file has been renamed but there is no change to its content, the diff doesn't display correctly.


Colin

On 9/16/2014 6:39 AM, Sara Rayburn wrote:
Hi,

We have a problem where the diff viewer for diffs with "rename" operations. We use mercurial, and output the diff in git style.

Here's a trivial example diff file:

diff --git a/include/CCvideo/configUI.H b/include/CCvideo/configUITest.H
rename from include/CCvideo/configUI.H
rename to include/CCvideo/configUITest.H

In the Diff summary section is:

include/CCvideo/configUITest.H <http://reviewboard.cctechnol.com/r/4112/diff/#0>
Was include/CCvideo/configUI.H

So I guess the rename works up to a point, but this is the error in the view diff page:

The file 'include/CCvideo/configUI.H' (rUNKNOWN) could not be found in the repository

This may be a bug in the software, a temporary outage, or an issue with the format of your diff.

Please try again, and if you still have trouble, contact support <http://reviewboard.cctechnol.com/support/>.

With traceback as follows:


Traceback (most recent call last):
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/views.py",
 line 236, in get
     renderer = self.create_renderer(context, *args, **kwargs)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/reviews/views.py",
 line 1088, in create_renderer
     *args, **kwargs)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/views.py",
 line 328, in create_renderer
     self.diff_file = self._get_requested_diff_file()
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/views.py",
 line 369, in _get_requested_diff_file
     request=self.request)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/diffutils.py",
 line 383, in populate_diff_chunks
     chunks = generator.get_chunks()
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/chunk_generator.py",
 line 153, in get_chunks
     large_data=True)
   File 
"/usr/lib/python2.6/site-packages/Djblets-0.8.10-py2.6.egg/djblets/cache/backend.py",
 line 111, in cache_memoize
     data = lookup_callable()
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/chunk_generator.py",
 line 152, in <lambda>
     lambda: list(self._get_chunks_uncached()),
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/chunk_generator.py",
 line 159, in _get_chunks_uncached
     old = get_original_file(self.filediff, self.request, encoding_list)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/diffviewer/diffutils.py",
 line 169, in get_original_file
     request=request)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/scmtools/models.py",
 line 291, in get_file
     large_data=True)[0]
   File 
"/usr/lib/python2.6/site-packages/Djblets-0.8.10-py2.6.egg/djblets/cache/backend.py",
 line 111, in cache_memoize
     data = lookup_callable()
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/scmtools/models.py",
 line 290, in <lambda>
     request)],
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/scmtools/models.py",
 line 456, in _get_file_uncached
     data = self.get_scmtool().get_file(path, revision)
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/scmtools/hg.py",
 line 43, in get_file
     return self.client.cat_file(path, six.text_type(revision))
   File 
"/usr/lib/python2.6/site-packages/ReviewBoard-2.0.7-py2.6.egg/reviewboard/scmtools/hg.py",
 line 264, in cat_file
     raise FileNotFoundError(path, rev)
FileNotFoundError: The file 'include/CCvideo/configUI.H' (rUNKNOWN) could not 
be found in the repository

--
Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
---
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
---
Happy user? Let us know at http://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "reviewboard" group. To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard+unsubscr...@googlegroups.com <mailto:reviewboard+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

--
Get the Review Board Power Pack at http://www.reviewboard.org/powerpack/
---
Sign up for Review Board hosting at RBCommons: https://rbcommons.com/
---
Happy user? Let us know at http://www.reviewboard.org/users/
--- You received this message because you are subscribed to the Google Groups "reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to reviewboard+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to