Le 11/09/2015 15:45, Marc Chantreux a écrit :
>> you would better use a branch for upstream and one for your (or many if
>> you have prod/staging/...).
> 
> i really would like but i don't know how to run RT from the sources
> (it seems you need to install it somewhere and run it from this place).
> 
>> It's easier when you need to upgrade RT or compare your patches with
>> upstream...
> 
> i patch the installed versions and maintain my own repos :( this is sad
> and i would be really happy to change it.  
> 
> 


I ended up storing a configured version in my upstream branch for the
same problem.

So here is the process used here:

- I do a clean ./configure ... and make install of RT (no edition of
config files)
- I put this in git in a branch upstrean/4.2 and tag the release
- I checkout this in a branch "prod"
- I make my custom configuration/patches in prod
- when I need to install an extension, I first install it in upstream
branch and merge it in prod (thus I can patch it in prod if needed)


a new RT release comes:

- I run the same ./configure...make install as previously done
- I put the result in upstream branch and commit this as upgrade to RT 4.2.x
- I merge upstream in prod


you can do it with pure sources, but you won't be able to "easily"
deploy it on servers.



And FYI our developpement rules:

For html files
- uses callback and put them in local directory
- no callback, add the missing one in share/html (patch) (submit it to
upstream if it may be of any interest for anyone else) and add the
callback file in local directory
- need a new mason component: put it in local/html directory
- need to really patch an existing one: do it in place in share/html
(*never copy the file to local dir*, upgrades will be a pain!)


For lib files
- put new methods in local/lib/RT/xxx_Local.pm
- put new objects in local/lib/RT/...
- need to patch an existing method: try to do so by creating a
local/lib/RT/xxx_Local.pm with:

my $old_method = \&Method;

*Method = sub {
    my $self = shift;
    my %args = ( @_ );

  ....

    $old_method->($self, @_);
  ....


- if you really need to patch the method, do it inplace in lib/RT/...,
*never copy a lib file/method to local dir* or upgrades will be a pain!



et voilà ;)


tip: I just discovered git "submodules" feature that may be used for RT
extensions ... maybe

-- 
Easter-eggs                              Spécialiste GNU/Linux
44-46 rue de l'Ouest  -  75014 Paris  -  France -  Métro Gaité
Phone: +33 (0) 1 43 35 00 37    -   Fax: +33 (0) 1 43 35 00 76
mailto:elac...@easter-eggs.com  -   http://www.easter-eggs.com

Reply via email to