Fix problem with displaying java diffs of maven projects in clearcase (main in path) - issue 3857

Review Request #7261 — Created April 29, 2015 and discarded — Latest diff uploaded

Information

Review Board
master

Reviewers

What version are you running?
2.0.15

What's the URL of the page containing the problem?
/reviewboard/r/530/diff/

What steps will reproduce the problem?
1. Post diffs of a java maven project inside a clearcase repo
2. Go to server.com/reviewboard/r/530/diff/

What is the expected output? What do you see instead?
Filenames of diff are correct.
"MavenProject/src/main/java/package/Filename.java"
instead the diff file name ends behind src
"MavenProject/src"

For files in the test folder it works "MavenProject/src/test/java/package/FilenameTest.java"

What operating system are you using? What browser?
Win 2008 Server R2

Please provide any additional information below.
Error in ReviewBoard-2.0.15-py2.7.egg\reviewboard\scmtools\clearcase.py
line 53

# This regular expression can extract from extended_path
# pure system path. It is construct from two main parts.
# First match everything from beginning of line to first
# occurence of /. Second match parts between /main and
# numbers (file version).
# This patch assume each branch present in extended_path
# was derived from /main and there is no file or directory
# called "main" in path.
UNEXTENDED = re.compile(r'^(.+?)/|/?(.+?)/main/?.*?/([0-9]+|CHECKEDOUT)')

As mentioned in the comment, this path is not expected to contain a "/main".

For Maven projects a src/main/java folder is required!

Fix
As mentioned in line 74-80:
ClearCase paths contain additional informations about branch
and file version preceded by @@/main/. This function remove this
parts from ClearCase path to make it more readable
For example this function convert extended path::

   /vobs/comm@@/main/122/network@@/main/55/sntp
   @@/main/4/src@@/main/1/sntp.c@@/main/8

to the the to regular path::

Clearcase not only add the /main it adds @@/main

Therefore checking the regex for @@/main fixes the problem.
Then, in the line 96 we can get rid of the replace.('@@','').

Best regards, Stefan

Tested with the commit which failed before. (See screenshots)