Hello Taylor,

yes, it is pretty much an extension of [1].
Basically, it would rather be quite a generic description of the fork/branching setup that would support a clear structure for having MITK (or any other Git-based open source project for that matter) as your external dependency which you would like to keep up-to-date with releases while having your own modifications that wouldn't go to the original MITK and at the same time be able to make clean pull requests.

The structure that I think would work well is something like http://nvie.com/posts/a-successful-git-branching-model/ with the difference of having an additional remote with its own development process (MITK/master branch in case of MITK). So there should be some additional branches and merging steps where one would integrate a new MITK release or some feature that is not in the release yet but is needed as well as creating the pull requests for the things that one would like to contribute to MITK. There are several issues that I'm still trying to resolve and I will look into it in the near future. I'm relatively new to the Git-based development (as opposed to non-distributed VCSs), so perhaps the more experienced users might help me with the single issue that I'm not sure how to approach yet. The issue is that suppose I work with the latest MITK release as I would like to have the most stable version. Now I want to contribute some bugfix to MITK. So if I make a branch from the MITK 'master' - it will be easy to contribute to MITK, but it would be a trouble integrating those changes to my own stable branch as the bugfix branch will also include the changes commited between the last release and current master head. And if I branch from my own 'stable' branch, then the pull request will contain the changes that are not only related to the bugfix. I approached that by basically creating a bugfix branch from the release tag - then the pull request is clean and the integration to my development branch is easy. This works very well for small changes, but it seems to me that it wouldn't work so well for larger contributions. Additionally, as the bugfix branch is made not from the current MITK master, some conflicts may appear that could be avoided by making a bugfix branch from the MITK master. Do you have any clean solutions for that issue in mind?

Also, once the branch structure is stabilized, it seems to me that creating a script should be relatively easy. It could be a python script based on something like this: https://github.com/github3py/github3.py and this https://pypi.python.org/pypi/python-bugzilla/1.0.0.

Cheers,
  Rostislav.

On 17/04/2014 21:44, Taylor Braun-Jones wrote:
Hi Rostislav,

On Wed, Apr 16, 2014 at 12:34 PM, Rostislav Khlebnikov <[email protected] <mailto:[email protected]>> wrote:


    I think that after I give a good run for my setup - I could write a
    simple guide for GitHub-based development with MITK which would
    include:
      - Forking MITK repo with a stable release tag
      - Setting up major branches, e.g. "stable" and "development", where
    stable would contain the MITK code guaranteed to work with "MyApp" and
    "development" is for syncing changes between multiple developers of
    "MyApp" and/or pulling from original MITK repository for testing a new
    release or particular features needed before the next release
      - Branching the "development" branch to introduce changes - that can
    be directly related to the bug in MITK or later renamed after
    testing a
    solution and filing a bug.
      - Contributing to MITK - creating pull request based on branches
    from
    "development" branch

    So the question is: are the users of MITK at all interested in such a
    guide and would the developers like to include this to the
    original MITK
    docs/website?


Yes, I'd be interested in such a guide. I'm guessing you've found the existing documentation[1] and just want to extend it?

I'd be even more interested in script that helps automate a common workflow I use:

1) Fix an MITK bug my MITK branch. Commit it. (e.g. commit 1234567)
2) Create a bug report at bugs.mitk.org <http://bugs.mitk.org> [2]
3) `git fetch upstream`
4) `git checkout -b bug-XXXXX-foo-bar upstream/master`
5) `git cherry-pick --signoff 1234567`
6) `git push origin bug-XXXXX-foo-bar`
7) Create a pull request from github.com <http://github.com> [3]
8) Add the pull request URL to the bugzilla bug report

Where the usage would look something like:

$ mitk-contribute-commits [--summary <msg>] <commit>...
Full bug description report read from stdin
<ctrl-d>
MITK bug report: http://bugs.mitk.org/show_bug.cgi?id=XXXXX
GitHub pull request: https://github.com/MITK/MITK/pull/YYY


[1] http://mitk.org/How_to_contribute
[2] http://www.bugzilla.org/docs/tip/en/html/api/contrib/bz_webservice_demo.html
[3] https://developer.github.com/v3/

------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to