brennie got review request #7000!

Make file exclusion support syntax consistent for all SCMClients

Review Request #7000 — Created March 2, 2015 and submitted — Latest diff uploaded

Information

RBTools
release-0.7.x
50ef470...

Reviewers

File exclusion support (e.g., with rbt diff -X pattern or
rbt post -X pattern) now behaves identically (with some caveats).
Previously, the case of having a pattern matching against the root of
the repository was not well defined and was misinterpreted by all
SCMClients. Now all patterns beginning with a path separator (e.g.
-X /pattern on Linux and Mac OS, and -X \pattern on Windows) are
treated as being relative to the root of the repository checkoutl.
However, because CVS generates diffs relative to the current working
directory (without an easy way to determine the checkout root), all
patterns (even those beginning with a path separator) are treated as
relative to the current working directory.

The documentation for the -X flag has been updated to reflect these
changes.

Unit tests have been added for Bazaar, Git, Mercurial, and Subversion
for generating diffs correctly with this new syntax. A unit test has
also been added for Perforce that checks that paths are normalized
correctly.

Ran unit tests.

Manually tested that files were excluded correctly using CVS.

Manually verified that all cases in issue 3776 are resolved:

  1. Running rbt diff -X PATTERN in a subdirectory checkout
    works as expected.
  2. We no longer rely on the Working Copy Root Path field of
    svn info.
  3. Running rbt diff --repository-url URL -X PATTERN R1:R2
    works as expected when ran outside of an SVN checkout.