For one, I would be interested. We use Bazaar and and have been slowly
trying to intergrate ReviewBoard in our system. I looked into the
post-review and it does not seem to support Bazaar. I have already
extended it using the Mercurial example and override two or three
methods that the Mercurial component did.

I plan to soon post my changes for Bazaar once I can verify that my
code actually works :)

On Tue, Jun 2, 2009 at 1:56 PM, Chris Clark <chris.cl...@ingres.com> wrote:
>
> If you want to deploy post-review with some site specific customizations
> (e.g. add support for a custom in house SCM) there are only a few options:
>
>    * Privately fork post-review and try and sync all the changes that
>      occur in "trunk" into your version
>    * add a wrapper script around post-review, e.g. rename post-review
>      to postreview.py (python does not allow hypens "-" in
>      module/library names), import postreview in your tool and then
>      monkey patch in your changes. The rename can be handled in
>      setup.py when "building"
>
> Neither solution is optimal but this is the price you pay if you want
> private custom versions :-(
>
> I don't have a solution to the above but I have some ideas on making it
> suck slightly less by making either option easier to deal with. For
> instance take the case where one needs to add in support for a custom
> SCM. You need to add a new class (subclassed from SCMClient) and then
> modify determine_client() to add it to the list of SCM's.
>
>    * With the forked approach you have to edit determine_client().
>    * With the wrapper approach you have to copy the existing
>      determine_client() into your wrapper, modify it then monkey patch
>      the original.
>
> Either way you have to be prepared to follow the trunk version in case
> determine_client() changes.
>
> What do people think of the following ideas:
>
> 1) move the tuple of SCM clients into a global variable.
> E.g. instead of:
>
>    # Try to find the SCM Client we're going to be working with.
>    for tool in (SVNClient(), CVSClient(), GitClient(), MercurialClient(),
>                 PerforceClient(), ClearCaseClient()):
>
> Have:
>
>
> scm_tuple=(SVNClient(), CVSClient(), GitClient(), MercurialClient(),
>           PerforceClient(), ClearCaseClient())
> ....
> def determine_client():
> ....
>    # Try to find the SCM Client we're going to be working with.
>    for tool in scm_tuple:
>
>
> This makes monkey patching the list easier, you just update the global
> from outside.
>
> 2) modify the trunk version of post-review to change the formatting that
> is used in the tuple (list) of SCM clients to make it easier to edit the
> list. E.g.:
>
> scm_tuple=(
>    SVNClient(),
>    CVSClient(),
>    GitClient(),
>    MercurialClient(),
>    PerforceClient(),
>    ClearCaseClient(),
>    )
>
> This makes it easier to modify the code if you decide to fork the
> script. You can re-order, add, or remove very easily. Diffs show up very
> clearly.
>
> Does this appeal to anyone? #1 above would make my life easier. I wanted
> to get a feel from a wide audience before posting a for patch for review
> where it may not be seen by so many people.
>
> Chris
>
>
> >
>



-- 
Ritesh
http://www.riteshn.com

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"reviewboard" group.
To post to this group, send email to reviewboard@googlegroups.com
To unsubscribe from this group, send email to 
reviewboard+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/reviewboard?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to