1. maven-scm-test This module was essential for me. It made me realise that I had misinterpret 50% of the api :) Ofcourse I could argue that the javadoc of the api itself was insufficient, but that does not take away the glory of the test module. I would really like to see the test module more extensive in the future.
A couple of issues with the diff test: a) I found it confusing that all files with a diff should be flagged as modified even if they where added or deleted. b) The test has an assert on the range tag '@@' that may be a bit too strict. Either can the the range field of the tag can be implisit, or bazaar has wrong diff output. Eg. @@ -0,0 +1,1 @@ is equal to @@ -0,0 +1 @@ if the file is added and has only one line. What about making a common diff output parser that could be used by all diff consumers? 2. maven-scm-api I found it very hard to simplify the usage of command results. Most result classes are equal, only the name differ. I could have removed some 13 lines of code and 2 cyclomatic complexity in all commands if we could unify the ScmResult API. eg. by adding a copy constructor the the ScmResult class and a (ScmResult, Files) constructor in most of the other CommandScmResult classes. What about a result factory? That would also unify the result _behavior_. 4. Code redundancy I think more effort should be put in to centralize code, and to move responibility from each provider to a common manager. Such things are difficult to do upfront, but now we have 7 providers and we can see what kind of freedom the provider needs and what could be centralized. All in all, I had a great time implementing the Bazaar provider and I think you have done a great job. Regards Torbjørn