CiviCRM Community Forums (archive)

*

News:

Have a question about CiviCRM?
Get it answered quickly at the new
CiviCRM Stack Exchange Q+A site

This forum was archived on 25 November 2017. Learn more.
How to get involved.
What to do if you think you've found a bug.



  • CiviCRM Community Forums (archive) »
  • Old sections (read-only, deprecated) »
  • Developer Discussion (Moderator: Donald Lobo) »
  • Managing deployments (now we have git)
Pages: [1] 2

Author Topic: Managing deployments (now we have git)  (Read 4350 times)

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Managing deployments (now we have git)
September 16, 2013, 09:07:46 pm
Now that we have CiviCRM in git it would be good to incorporate that into our deployment process. (actually I think 4.3 was already on git we skipped 4.3 - partly because of the deployment issue).

Background
Prior to 4.1 (which we also skipped) it was possible to get through a version without forking it because the policy on allowing fixes & improvements into the stable release was quite open. However, for stability reasons this changed in 4.1 & I don't think anyone managing more than multiple sites would consider doing it on 'stock' CiviCRM now.

Fuzion 4.2 deployment (our current version)
In 4.2 our approach was to check the unzipped files from the release into github as a branch. From this we removed the drupal folder & added all the l10n files & that was our base.

We then created a branch off that called 4.2-master and all the patches we did were added to that. We then added 2 more branches - 4.2-d6 & 4.2-d7 which were master + the drupal folders & there were our deployment branches.

When a new release came out we upgraded the base branch & rebased the 4.2-master over that & the drupal branches over that. Each release some commits needed tidying up & I tended to squash some as well. When other consultants wanted to do an LTS release of 4.2 I cherry-picked all my commits onto the LTS & the LTS became 4.2.9 + about 80 patches from our repo. (I only put patches already in 4.3 or 4.4 into the LTS).

Attempting to work with CiviCRM in git
My expectation was that when CiviCRM went onto git the CiviCRM version would become the base of our versions. However, having tried to make this work on 4.3 & the LTS and it has been very painful. Basically the problem is that the civicrm-core doesn't include important folders like packages DAO & does include deployment files which are not all in one directory.  This means building a base revision off the civi code is a PITA - but worse cherry-picking stuff across causes all kinds of problems because a patch to core might include changes to tests which have been removed in the base revision but cause a conflict or re-add a test as you try to pull across.

What about make files?
I had been hearing about a drupal-make approach perhaps being the answer - but talking to Chris today it still seems like you need to build the patches you will apply on top against a base revision - so the need for a base-revision appropriate to deployment remains.

So?
So, at this stage nothing seems to beat simply ignoring the fact CiviCRM is now in github & checking in the actual releases into our github. We can't do pulls directly against core but for some reason github seems to have removed the ability to turn an individual commit into a PR anyway (a cherry-pick PR) & there is no way doing a PR from a deployment release into core would work.

Overall I'm spending way too much time wrangling code between our deployment repo & submitting to Core & I have some personal strategies that I am contemplating - but I am aware that what would be good for me would not be good for the community - especially not if everyone adopted those sorts of strategies.

What is working for other people?
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

jaapjansma

  • I post frequently
  • ***
  • Posts: 247
  • Karma: 9
    • CiviCoop
  • CiviCRM version: 4.4.2
  • CMS version: Drupal 7
  • MySQL version: 5
  • PHP version: 5.4
Re: Managing deployments (now we have git)
September 17, 2013, 02:07:52 am
Thanks Eileein for sharing. I am quite new to CiviCRM and I am surprised about the difficulty of version management which does not seem the case with other open source software (Such as Contao and Drupal).
I recognize the fact that is somehow quite difficult to setup an civicrm core from github to fix core issues and test them in the unstable development branch.
This could be much less cumbersome than it is now the case. It would probably start with creating a simple package structure which is for all versions the same, for dev, stable releases etc. Now the dev has some xml to generate the DAO's but in the stable version the DAO's are in place already... This is just an example what I think makes the core setup of Civi too difficult for me at least.

One of the goals of scm and version management is to make it easier to manage the different versions.. And if it is easier to manager it usually easier to understand which leads to more qualitive code, which leads to more stable versions
Developer at Edeveloper / CiviCoop

xavier

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4453
  • Karma: 161
    • Tech To The People
  • CiviCRM version: yes probably
  • CMS version: drupal
Re: Managing deployments (now we have git)
September 17, 2013, 02:23:17 am
Hi,

I feel the pain, we have a workflow with a bit of rsync and a bit of git, but too hackish to be considered as a good solution.

May be the time has come to properly manage dependencies and use composer to "make" a civi in one step.

for our own need, we would "just" have to change the composer.json to cherry pick with version of civi-core and whatever else is non standard.


X+
-Hackathon and data journalism about the European parliament 24-26 jan. Watch out the result

kreynen

  • I post occasionally
  • **
  • Posts: 105
  • Karma: 8
Re: Managing deployments (now we have git)
September 17, 2013, 05:56:49 am
During the DC Camp sprint, I was looking at ways to improve the drush make approach to packaging a distribution used to build https://drupal.org/project/civicrm_starterkit and the other Drupal distributions that use the CiviCRM Starter Kit's .make file as their starting point.  I came to the conclusion that we couldn't use Github as a source and had to use the packages created by the scripts in https://github.com/civicrm/civicrm-core/tree/master/distmaker. 

I was a bit surprised to learn from @kurund via IRC (http://irc.civicrm.org/logs/%23civicrm.log.2013-09-05.txt) about the process the core team uses to make customizations to the packages included in https://github.com/civicrm/civicrm-packages/.  The packages are downloaded from the original source, modifications are made, and the modified version is directly committed.  When the core team updates the package, the update is downloaded from the original source, modifications are made again if necessary, and the updated/modified version is committed.

In many cases, the only way to figure out what's been changed from the original source or the package is to download the version modified for CiviCRM and diff it against original repo or files.



nicolas

  • I post occasionally
  • **
  • Posts: 92
  • Karma: 6
    • cividesk
  • CiviCRM version: 4.4 LTS
  • CMS version: Standalone (yep)
  • MySQL version: 5.1
  • PHP version: 5.3
Re: Managing deployments (now we have git)
September 17, 2013, 10:21:54 am
I absolutely concur: the new git structure makes contributing to upstream very cumbersome and time-consuming.

This comes from the fact that the git repo is not directly 'deployable' (creating an operational Civi instance from git takes at minimum cloning of 3 repos, sometimes 4, and deleting some directories). So I, as Eileen and other implementers do, maintain a unique 'deployable' repository that is also our main development and testing repository. From this repository we can deploy to our customers with a single git pull.

But if we want to contribute our patches/enhancements to core, in addition to this repository we need to maintain public clones of the 6 LTS repositories, and public clones of the 6 core team repositories. So we jump from a single repository repository to 13! And that's not even counting the separate local clones, development/test environments, etc. Moreover, since our 'deployable' repository is a clone of neither, and the github UI is very particular about PRs, we have to manually copy/paste bit of code from our repo to the LTS clones and the core team clones (yes, that's twice), and create branches and issue PR's in each 'silo'.

Very cumbersome and time consuming. And I'm not event tasking about the frustration of having the core team refuse your patch for some good reason or another, and having to go through this whole process again!

I think there are multiple ways to solve this issue:
  • go back to a 'deployable' repository structure such as we had in SVN
  • use nested repositories with the git submodule feature
  • automated builds with a dependencies manager such as composer
  • automated builds with a scripting system such as make or phing

Whatever is chosen, the primary goal would be that maintainers of clones/forked version of CiviCRM can both:
  • deploy to their customers with a single pull,
  • and contribute back to upstream with the minimum amount of work - ideally just issuing a PR from the same repository.
cividesk -- CiviCRM delivered ... your way!

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Managing deployments (now we have git)
September 17, 2013, 02:25:49 pm
OK, So, some responses.

1) Several people have mentioned composer. I'm not sure I understand how that would help - could someone explain? It seems to me composer is the holy grail in the same way that that make scripts are - if you have an appropriate base which seems to be the sticking point

2) yes, the svn repository DID include the packages dir & the packages dir is a notable problem

3) the svn repository also included the CMS directories. It did not include drupal 6 which could not co-exist with drupal7. However, I don't think that will apply to drupal 8 for CMS's other than drupal 6 having the CMS files in the main repo works fine.

4) we've talked previously about including DAOs in the repo & it has been agreed they should be included (although it hasn't yet happened)

5) However, the problem is not just missing files but additional files scatterered around the place. How big a problem is this? It's quite a big problem in terms of managing getting them out of a deployable git. Do they need to be removed? I don't know. I have been hesitant to leave them in if others are not doing so in case there is a security problem with them. I don't have any other problems with leaving them in & if others were making the same choice I probably would. Removing the tests dir is a real pain because about 80% of my commits involve a change to tests as well as core & I either have to commit the 2 separately or deal with cherry-picking problems

6) cherry-pick PRs. For all the pain of PRs they do confer some real benefits. Having code review is great for stability & for collaborative development. (although sometimes people are just picking up errors I created in the git wrangling to create the PR). If it were possible to do cherry-pick PRs that would be really helpful. It used to be on github that when you were viewing a commit you could click the PR button directly from there & generate a cherry-pick commit. Knowing github this still works if you know the right URL. If we could figure this out it would make a huge difference.

7) Alternatively, in my perfect world, you would be able to paste a link to a proposed commit into JIRA & there would be an automated process that a) tests it - like with drupal & b)generates a PR based on it - if it will apply smoothly, In this flow it wouldn't matter if you didn't use civicrm-core as your base as you would be effectively submitting a patch (although you would need to be careful to patch with the core structure in mind)

8) if multiple people are, like us, coming to the conclusion "I came to the conclusion that we couldn't use Github as a source and had to use the packages created by the scripts in https://github.com/civicrm/civicrm-core/tree/master/distmaker.  " - does it make sense to create a shared distribution based git repo - so we aren't all going through the same process to create our base. An option I have been thinking about with this flow is to then log tickets & paste links to the patches into JIRA & rather than pushing them through the PR as I go along, put the $ / time saved aside to go to a sprint once or twice a year where I would work through getting all my patches into core in a much more enjoyable way
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

mathieu

  • Administrator
  • Ask me questions
  • *****
  • Posts: 620
  • Karma: 36
    • Work
  • CiviCRM version: 4.7
  • CMS version: Drupal
  • MySQL version: MariaDB 10
  • PHP version: 7
Re: Managing deployments (now we have git)
September 17, 2013, 02:58:19 pm
I deploy with "Drush make":

* deploy from my git repos or from the civicrm standard ones (drush make example.make)
* run GenCode.php

Example makefile: https://gist.github.com/mlutfy/5310366

What do you mean by: "build the patches you will apply on top against a base revision"? Since you're cloning your own git repo (ex: fuzion, or github.com/mlutfy/civicrm-core), not from github.com/civicrm, you don't need to apply your own patches from the issue que, as we did when drupal.org was still on CVS.

It could be a nice improvement if we had DAOs in git directly. Although I wonder if a post-checkout hook would do the trick: http://nschoenmaker.nl/2013/07/composer-post-checkout-hook-in-git/?

But I agree that we should make the developer barrier simpler.
CiviCamp Montréal, 29 septembre 2017 | Co-founder / consultant / turn-key CiviCRM hosting for Quebec/Canada @ SymbioTIC.coop

Eileen

  • Forum Godess / God
  • I’m (like) Lobo ;)
  • *****
  • Posts: 4195
  • Karma: 218
    • Fuzion
Re: Managing deployments (now we have git)
September 17, 2013, 03:49:39 pm
BGM & I discussed this further on http://irc.civicrm.org/logs/%23civicrm.log.2013-09-17.txt

(no solutions but some food for thought.

The problem is that we tend to accumulate & forward-port to master a large number of patches. Around 100 fixes in 4.2 were developed in our repo & pushed into 4.3 & 4.4
Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

nicolas

  • I post occasionally
  • **
  • Posts: 92
  • Karma: 6
    • cividesk
  • CiviCRM version: 4.4 LTS
  • CMS version: Standalone (yep)
  • MySQL version: 5.1
  • PHP version: 5.3
Re: Managing deployments (now we have git)
September 17, 2013, 09:39:50 pm
Eileen - I went through the IRC logs, a lot was discussed about deployment, but I think the issue is more on the development side. You and I deploy with a simple git pull, no need to change that. The issue on the development side is that it is cumbersome and time consuming to contribute back patches, in great part due to these split repos.

On your comments:
  • composer could help by managing the 'packages' directory. You list all dependencies in a text file and they get downloaded automatically by composer. It would be very useful as well in understanding which packages are original vs modified, as Kevin pointed out
  • on the extra files, I agree with you we should not leave all these dev/test/packaging scripts in live instances, they represent a huge potential security risk
  • we definitely should include the DAO's in core. I would also advocate to push all development tools, makefiles, scripts AND xml and source sql files in a 'development' repository. This way we have clean separation between the 'runtime', ie. deployable environment that people can just git clone and run, and the 'development' that includes all stuff used by the developers.
  • all solutions based on drush, aegir, etc are Drupal-only and do not apply to the other CMS'es (or Standalone for that matter). They should not be part of our brainstorming since we also want to include the non-Drupal developers in our community, and therefore make it easy for them to contribute (right ?)
  • I love your #7 - this is the ideal world for me as well: paste a link to your commit, you've just contributed to core! But I do like the PR process for the peer review a well. What angers me in the PR proces today is that it is linked to a specific branch: I would like to be able to submit a single PR, and that then the core team can merge it in 4.4, 4.3 and 4.4, or LTS, 4.3 and 4.4. This would combine the best of the patch file process with the best of the PR process.
    cividesk -- CiviCRM delivered ... your way!

    Eileen

    • Forum Godess / God
    • I’m (like) Lobo ;)
    • *****
    • Posts: 4195
    • Karma: 218
      • Fuzion
    Re: Managing deployments (now we have git)
    September 17, 2013, 10:16:30 pm
    my #7 was not so much instead of the peer review - it was having the PR generated for peer review without me having to do it - & having it checked for test regression before making it into core/ to the review stage.

    Not sure I fully understand the benefits of composer. Is it potential around clashes, e.g on html_purifier in civi vs drupal?
    Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

    Eileen

    • Forum Godess / God
    • I’m (like) Lobo ;)
    • *****
    • Posts: 4195
    • Karma: 218
      • Fuzion
    Re: Managing deployments (now we have git)
    September 17, 2013, 10:19:55 pm
    NB -

    Code: [Select]
    I am quite new to CiviCRM and I am surprised about the difficulty of version management which does not seem the case with other open source software (Such as Contao and Drupal).
    I don't know how true that is - I suspect a very small subset of drupal users submit patches for core. Patches to modules are more common - but they tend to languish & it also seems painful.

    A lot of the difficulty is around the pushing upstream process.
    Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

    jaapjansma

    • I post frequently
    • ***
    • Posts: 247
    • Karma: 9
      • CiviCoop
    • CiviCRM version: 4.4.2
    • CMS version: Drupal 7
    • MySQL version: 5
    • PHP version: 5.4
    Re: Managing deployments (now we have git)
    September 18, 2013, 12:26:32 am
    It could be that what I am saying is not true at all. I am quite new to CiviCRM but as fasr as I got from a development perspective my only way to contribute things to core is through patches in the JIRRA. And that is good enough for me as far as I am concerned. The things you are discussing 13 repo's deployable to your customers... That sounds not something I want to have.

    I am always thinking quite clearly as PHP does not need to be compiled (unlike JAVA, C# etc), you always get the full source code on your production server, so based on that the version for production should ideally in the same repo as in the development (only the branches/tags should differ). Because development is unstable branch and a production version such 4.3.5 is a stable branch.
    Developer at Edeveloper / CiviCoop

    totten

    • Administrator
    • Ask me questions
    • *****
    • Posts: 695
    • Karma: 64
    Re: Managing deployments (now we have git)
    September 18, 2013, 01:18:25 am
    @bgm, thanks for the example drush-make file!

    @krenyen, I agree that the current management of civicrm-packages is scary/cumbersome. Would greatly prefer to kill that repo and use something like composer or drush-make to handle those dependencies. (This would require us to untangle some of CiviCRM's adhoc hacks/forks inside packages and align better with upstream... but that's good!)

    @krenyen, what were the issues that prevented you from using drush-make to prepare a distribution from source on github.com? @bgm's example makes sense to me, but maybe there's something more - something we can fix?

    @nganivet, I like your list of four options. I feel like options #2, #3, and #4 all share a basic architecture: civicrm.org provides components in a way that can be remixed, and then the system-integrator/implementer does the remixing with whichever tool he likes (drush-make, composer, git-submodules, git-subtree, phing, bash, etc). The outlier is #1. In approach #1, everyone needs to agree on what the "deployable" file-structure is. Will try to comment more on #1 later (because eileen digs into that one). But I really believe the architecture of #2/#3/#4 gives integrators the most benefit. (My main disappointment is that I haven't had time to bring this approach all the way to fruition.)

    @eileen, a key pain-point that struck me in your comments in the IRC log -- it seems that (a) you submit every change to three repos (fuzion+LTS+official) and (b) you commit to *all* repos *before* code-review. That sounds painful. Could we simplify without making any technical changes -- i.e. make some low-tech changes to the workflow:

    a. Don't do the gitwork for LTS yourself -- instead, send a 2-line email to someone else on the LTS team with a link to your civicrm-core PR. They can backport it. When the LTS team formed in April/May, they wanted to build on your work -- but didn't want to impose on you to do everything. They were ready/willing to help. Delegate! They're capable!

    b. Develop patches as PRs to civicrm-core first. Get feedback and let Jenkins run the tests. After QA, backport the final fix to fuzion's git and notify LTS (if you feel like it). This avoids the problem of re-submitting intermediate versions to multiple places.

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    1) Several people have mentioned composer. I'm not sure I understand how that would help - could someone explain? It seems to me composer is the holy grail in the same way that that make scripts are - if you have an appropriate base which seems to be the sticking point

    I think the origin of it is this: your current architecture requires maintaining a long-running, deployable fork (ie one in which you've manually merged changes to CiviCRM, Drupal, and all the other modules/extensions you use). That's painful no matter how you slice it, and the best alternative is to make it unnecessary by using a good build tool. Composer and drush-make are cool, but there are many, many others.

    But listening to your workflow, I agree that there's an issue with "appropriate base" - or, put another, "serving too many masters". It sounds frustrating. That workflow puts you in the position of submitting code to too many places in a weird order. I think the low-tech solution (above) is probably simplest, but there are other solutions:

    - Setup a "merge-forward" workflow (we have scripts to do this for 4.3=>4.4). Since you mostly work on 4.2, you would submit changes for review/testing to 4.2-LTS, and then all changes to 4.2-LTS would "merge-forward" en masse to 4.3/4.4. This in turn requires some work (e.g. upfront work with "git graft/git replace" to reconcile the repos, and then on-going work to resolve merge issues). I don't know who would do that work. (Maybe someone from LTS team?) But it's another possible solution.

    - (There was another approach... but I forgot it... it's taking way too long for me to reply to this thread...  :o)

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    2) yes, the svn repository DID include the packages dir & the packages dir is a notable problem

    As @krenyen pointed out, the packages dir has a... quixotic management practice. It needs to die. If we merge it into the main repo, then it will not die nicely -- it will haunt us forever, floating around with its 20 revisions of selenium.jar clogging up everyone's harddrive.

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    3) the svn repository also included the CMS directories. It did not include drupal 6 which could not co-exist with drupal7. However, I don't think that will apply to drupal 8 for CMS's other than drupal 6 having the CMS files in the main repo works fine.

    We can only speculate about whether D8/Backdrop/D7 will coexist (because they're moving targets). We know that D6/D7 cannot, and we know that the old svn structure was uninstallable for Joomla and WordPress. The old svn structure really only worked well for one group at any point in time. (For 4.2/4.1/4.0, the anointed group was D7 developers. For 2.x-3.x, it was D6 developers.)

    No one has put any time into it yet, but I believe that splitting out the CMS modules gives us much better prospects for creating easy deployment solutions that work on virgin copies of all CMS's (WP/J/D6/D7/D8/Backdrop).

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    4) we've talked previously about including DAOs in the repo & it has been agreed they should be included (although it hasn't yet happened)

    +1, #AOL, YES! +1 ++Good

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    5) However, the problem is not just missing files but additional files scatterered around the place. How big a problem is this? It's quite a big problem in terms of managing getting them out of a deployable git. Do they need to be removed? I don't know. I have been hesitant to leave them in if others are not doing so in case there is a security problem with them. I don't have any other problems with leaving them in & if others were making the same choice I probably would. Removing the tests dir is a real pain because about 80% of my commits involve a change to tests as well as core & I either have to commit the 2 separately or deal with cherry-picking problems

    I've missed something. What files are scattered? Why are you removing the tests dir? Why would you want to do development-activities (like cherry-picking and merging) on a source tree that doesn't have any tests -- how can one QA the result?

    If it's a security a concern, then one can easily block access at the httpd level, or one can script it. Trivially:

    Code: [Select]
    #!/bin/bash
    git checkout master
    rm -rf tools tests xml
    # Note: Each time you run, the unwanted files will get recreated ('git checkout') and redestroyed ('rm').
    # The files endure for ... half a second? But who cares? If that's a problem, spend 5 minutes
    # writing a better bash script.

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    7) Alternatively, in my perfect world, you would be able to paste a link to a proposed commit into JIRA & there would be an automated process that a) tests it - like with drupal & b)generates a PR based on it - if it will apply smoothly, In this flow it wouldn't matter if you didn't use civicrm-core as your base as you would be effectively submitting a patch (although you would need to be careful to patch with the core structure in mind)

    That sounds cool. Some tools that integrate JIRA/Github/tests into a nicer workflow could be quite handy. :)

    Quote from: Eileen on September 17, 2013, 02:25:49 pm
    8) if multiple people are, like us, coming to the conclusion "I came to the conclusion that we couldn't use Github as a source and had to use the packages created by the scripts in https://github.com/civicrm/civicrm-core/tree/master/distmaker.  "

    If folks have issues/pain-points with checking out code from github.com (like DAOs and unwanted tests), then let's work through them. I think we can find solutions that address those issues, that work with multiple CMSs, and that are compatible with the powerful build tools written outside our community.

    Eileen

    • Forum Godess / God
    • I’m (like) Lobo ;)
    • *****
    • Posts: 4195
    • Karma: 218
      • Fuzion
    Re: Managing deployments (now we have git)
    September 18, 2013, 02:17:09 am
    Code: [Select]
    b. Develop patches as PRs to civicrm-core first. Get feedback and let Jenkins run the tests. After QA, backport the final fix to fuzion's git and notify LTS (if you feel like it). This avoids the problem of re-submitting intermediate versions to multiple places.
    While review of my recent PRs might give a different impression, most of the code I submit is actually bug fixes / improvements / features which are already in production on our customer's sites by the time I turn my attention to getting them into core. (lately I have done a lot of work directly against master - this has mostly not been back-ported or customer funded. I intend this to stop as soon as 4.4 goes stable).

    'Normal' patches - I develop against our dev site for that customer & generally run something close to 'continuous integration' with these. Mostly I don't port back changes from the peer-review process - the majority are either stylistic or to-do with bugs introduced in porting, or changes required for the different CiviCRM version I am porting them into.

    One of the principles that has always seemed to apply is 'if you don't get everything done, including getting it into core before you close the customer's issue then it will wind up coming out of your own time / pocket'. However, over the course of this discussion I have been thinking about considering an alternate approach - ie, instead of aiming for a 'touch the bug once ' approach going for a 'touch the porting once approach' - i.e charge the customers for some extra time with each fix I do, & log the bugs in JIRA  & then 1-2 times a year use the money to spend 10 days at a sprint doing all the porting/ PRs at once. I think it would be more efficient - & more fun.

    Thinking back to why I originally abandoned the submodules approach (& whether I should go back to it) - apart from the quirks submodules throws up - I hit a couple things, 1) I found it easier to have a d6 & a d7 deployment branch since I needed different versions - at that point it seemed easier just to commit the directory. The other was the 'cleaning' of patches I tend to do - ie. rebasing against new releases - however, looking at github I see only 3 patches on packages & only a handful on https://github.com/fuzionnz/civicrm-drupal7/commits/master -  probably already in core. So, perhaps I need to try the submodules approach again for 4.4.

    I don't have the patch that shows all the other changes to core between deployment & git - but there are a lot of little changes. We can talk about tools & tests - but there were a lot more changes than that.

    Note that in terms of the LTS - that should start to wind down when 4.4 comes out - with the exception of security bugs. We managed to consolidate all our customers on exactly the same codebase in 4.2 & that will be my goal with 4.4 as well.
     
    Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

    Eileen

    • Forum Godess / God
    • I’m (like) Lobo ;)
    • *****
    • Posts: 4195
    • Karma: 218
      • Fuzion
    Re: Managing deployments (now we have git)
    September 18, 2013, 02:33:18 am
    Code: [Select]
    Why are you removing the tests dir? Why would you want to do development-activities (like cherry-picking and merging) on a source tree that doesn't have any tests -- how can one QA the result?
    I missed this one - I do development / bug-fixes on our development copy of a customer's site - on the relevant server - unless it's api related in which case I usually do it against core & backport it  (I generally write the tests first when I do api fixes so I generally do api work 'headless'). I do git work related to our repo on that site & then switch back to my local machine to do any work on putting the code into core. (I run my lts repo entirely headless).

    I don't consider the sample dataset/ config to be complex enough for much of the work I do.
    Make today the day you step up to support CiviCRM and all the amazing organisations that are using it to improve our world - http://civicrm.org/contribute

    Pages: [1] 2
    • CiviCRM Community Forums (archive) »
    • Old sections (read-only, deprecated) »
    • Developer Discussion (Moderator: Donald Lobo) »
    • Managing deployments (now we have git)

    This forum was archived on 2017-11-26.