4662: rbt diff error: CRITICAL: too many values to unpack

totoroliu

What version are you running?

rbt --version
RBTools 0.7.11

What steps will reproduce the problem?

  1. Prepare a test text file below and commit into SVN:
    test2.txt:
    -- T1 (ESF) 65

  2. svn rm test2.txt

  3. svn diff:
    Index: test2.txt
    ===================================================================
    --- test2.txt (revision 201771)
    +++ test2.txt (nonexistent)
    @@ -1 +0,0 @@
    --- T1 (ESF) 65

  4. rbt diff
    CRITICAL: too many values to unpack

What is the expected output? What do you see instead?

It should show similar diff as "svn diff"
but it throws out erorr.

$ rbt diff
CRITICAL: too many values to unpack

What operating system are you using?

Ubuntu 16.04 LTS

Attach the debug out from the command.

$ $ rbt diff --debug
>>> RBTools 0.7.11
>>> Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609]
>>> Running on Linux-4.4.0-112-generic-x86_64-with-Ubuntu-16.04-xenial
>>> Home = /home/rickliu
>>> Current directory = /tmp/rick_rb_test_trunk/
>>> Command line: rbt diff --debug
>>> Running: tf vc help
>>> Checking for a Subversion repository...
>>> Running: svn --non-interactive info
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: https://xxx.com/svn/, Base path: /rick_rb_test/trunk/, Supports changesets: False
>>> Making HTTP GET request to https://reviewboard-test.com/api/
>>> Running: svn --non-interactive info
>>> Running: diff --version
>>> Running: svn --non-interactive --version -q
>>> repository info: Path: https://xxx.com/svn/, Base path: /rick_rb_test/trunk, Supports changesets: False
>>> Running: svn --non-interactive status -q --ignore-externals
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE
>>> Running: svn --non-interactive info test2.txt
>>> Running: svn --non-interactive diff --diff-cmd=diff --notice-ancestry -r BASE --no-diff-deleted
>>> Running: svn --non-interactive info test2.txt
>>> Running: svn --non-interactive info test2.txt
>>> Running: svn --non-interactive info test2.txt
Traceback (most recent call last):
  File "/usr/local/bin/rbt", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/rbtools/commands/main.py", line 133, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "/usr/local/lib/python2.7/dist-packages/rbtools/commands/__init__.py", line 665, in run_from_argv
    exit_code = self.main(*args) or 0
  File "/usr/local/lib/python2.7/dist-packages/rbtools/commands/diff.py", line 69, in main
    extra_args=extra_args)
  File "/usr/local/lib/python2.7/dist-packages/rbtools/clients/svn.py", line 405, in diff
    diff = self.convert_to_absolute_paths(diff, repository_info)
  File "/usr/local/lib/python2.7/dist-packages/rbtools/clients/svn.py", line 663, in convert_to_absolute_paths
    file, rest = self.parse_filename_header(line)
ValueError: too many values to unpack

Please provide any additional information below.

It's related to Ticket# 4546

--      T1 (ESF)                   65
Index: test2.txt
===================================================================
--- test2.txt	(revision 201771)
+++ test2.txt	(nonexistent)
@@ -1 +0,0 @@
---      T1 (ESF)                   65
totoroliu
#1 totoroliu

Somehow if I removes some multiple spaces in between the words, then rbt diff becomes working.
So it looks like multiple spaces triggered the error

totoroliu
#2 totoroliu

test2.txt (error):

$ cat test2.txt 
--      T1 (ESF)                   65

test3.txt (ok):

$ cat test3.txt 
-- T1 (ESF) 65