1065: svn file moves/copies/branches don't work
- Fixed
- Review Board
veste*****@gmai***** (Google Code) (Is this you? Claim this profile.) | |
Feb. 16, 2014 | |
1064, 1234, 1322, 1487, 1617, 1867 |
Problem closely related to http://code.google.com/p/reviewboard/issues/detail?id=1064 What steps will reproduce the problem? 1. svn checkout http://reviewboard.googlecode.com/svn/trunk/reviewboard reviewboard 2. cd reviewboard 3. mkdir newdir 4. svn add newdir 5. svn mv settings.py newdir 6. make changes to newdir/settings.py 7. post-review --server=http://demo.review-board.org Review only shows the deleted directory (= the original name) + files inside. The new directory (and all files inside) are not shown in the review request Draft review of problem here: http://demo.review-board.org/r/1705/diff/ What is the expected output? What do you see instead? settings.py shown deleted settings.py shown added to newdir/settings.py and has local changes diffed against trunk/settings.py What operating system are you using? What browser? windows xp, RBTools-0.2beta1-py2.5.egg
OOps, a bit of copy-paste error after step 7 :). Should have said: The diff viewer fails to generate a diff for newdir/settings: /trunk/reviewboard/settings.py Diff currently unavailable. Error: The patch to '/trunk/reviewboard/newdir/settings.py' didn't apply cleanly. The temporary files have been left in '/tmp/reviewboard.W1fraQ' for debugging purposes. `patch` returned: patching file /tmp/reviewboard.W1fraQ/tmphfd4NX Hunk #1 FAILED at 16. 1 out of 1 hunk FAILED -- saving rejects to file /tmp/reviewboard.W1fraQ/tmphfd4NX-new.rej Details Traceback (most recent call last): File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/views.py", line 213, in view_diff_fragment file = get_requested_diff_file() File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/views.py", line 189, in get_requested_diff_file get_chunks) File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/diffutils.py", line 620, in get_diff_files large_data=True) File "/usr/lib/python2.5/site-packages/Djblets-0.5beta1- py2.5.egg/djblets/util/misc.py", line 143, in cache_memoize data = lookup_callable() File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/diffutils.py", line 619, in <lambda> enable_syntax_highlighting), File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/diffutils.py", line 342, in get_chunks new = get_patched_file(old, filediff) File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/diffutils.py", line 258, in get_patched_file return patch(filediff.diff, buffer, filediff.dest_file) File "/usr/lib/python2.5/site-packages/ReviewBoard-1.0beta2- py2.5.egg/reviewboard/diffviewer/diffutils.py", line 127, in patch (filename, tempdir, patch_output)) Exception: The patch to '/trunk/reviewboard/newdir/settings.py' didn't apply cleanly. The temporary files have been left in '/tmp/reviewboard.W1fraQ' for debugging purposes. `patch` returned: patching file /tmp/reviewboard.W1fraQ/tmphfd4NX Hunk #1 FAILED at 16. 1 out of 1 hunk FAILED -- saving rejects to file /tmp/reviewboard.W1fraQ/tmphfd4NX- new.rej
Just a follow-up. If I do 1. svn checkout http://reviewboard.googlecode.com/svn/trunk/reviewboard reviewboard 2. cd reviewboard 3. svn mv settings.py settings_renamed.py 4. post-review --server=http://demo.review-board.org ... I get an review request only containing a deteled settings.py file (the settings_renamed.py is not there in the review) If I do 1. svn checkout http://reviewboard.googlecode.com/svn/trunk/reviewboard reviewboard 2. cd reviewboard 3. svn mv settings.py settings_renamed.py 4. <make some changes to settings_renamed.py> 5. post-review --server=http://demo.review-board.org ... I get settings.py listed twice in the review. The first time is like in the previous example (deleted) the next time the lines I changed in settings_renamed.py are shown as new changes to settings.py (diffed against settings.py head). settings_renamed.py are is never mentioned in the review.
This has to do with SVN diff limitations (to be fixed in SVN 1.8 potentially). But post-commit *could* try to workaround it in the meantime. SVN diff only shows modified file content (not directories, not filenames). If you do a "SVN move" *without* modifying the file, "SVN diff" will not report the "changes". So you will only see "deleted content" -- and the new file -- since it was copied but not modified, will NOT be reported. The post-commit script -- uses the output of SVN diff to know which file to process -- it does not do a SVN status to find what is really happening.
Are there any chances for this issue to be fixed soon?
Are any workarounds available for this issue while we wait for a fix?