• View
  • Changes
  • Options
  • Related
  • Edit
  • Download | Support | Changelogs

     

    Documentation:

    General Information

    Introduction | Overview | Features | Goals and Scope | FAQ Installation | Running an ACE Server | Tracking Problems

     

    Community Information

    About Us (contact) | Compatible Mods | Contribute | Guides | Missions | Servers | Videos

     

    Developer Information

    API | Classlists | Compatibility | Modification | Resources

     

  • View
  • Changes
  • Options
  • Related
  • Edit
  • News    

    Ongoing development Wagn_feed_icon-medium-9343

       ACE 1.13 RC5 [2011-12-09. Hotfix: 2012-04-27]

     

    Stable Wagn_feed_icon-medium-9343

       ACE 1.13 for OA [2011-12-23]

       ACE 1.3 for A2 [2010-07-05] (Deprecated)

     

    Dev blogs Wagn_feed_icon-medium-9343

    1 2 next » (37)

    1 2 next » (37)

     

    Wheeled by Wagn v. 1.8.1
  • View
  • Changes
  • Options
  • Related
  • Edit
  • Workflow

    Based on http://nvie.com/git-model

     

    Overview

    • Topic Branches (Or Feature, or short-lived) are branches you temporary create for a specific issue/feature, most of the time you keep them local.
    • Long Running Branches are branches that for example denote the different levels of stability/experimentation. E.g  master (stable),  development (ongoing development). These are usually remote.
    • develop: main develop trunk; latest development version
    • feature/*: local / custom user branch(es) to code new features, issue fixes, etc
    • release/*: release preparation branches
    • stable (master, in the picture below): end user, milestone versions

    Branching+image-original-7923

     

    General

    RULE #1: Don't commit to the stable branch, as the remote repository will not accept the push.

     

    Ongoing development happens in the develop branch.

    Work inside a feature branch. You can also publish it, incase you need to work with more people on it, or need your work backed up (useful with longer running).

    When sufficiently finished, merge the feature branch back into the develop branch.

    Managers will merge the develop branch to stable (through a release branch) as soon as the next milestone release is ready.


    Generally, this should improve the manageability of our code, history, maintenance etc.
    It also allows you to enjoy all the features of Git Version Control, while you're experimenting in seperate feature branches.

    Working

    Please see Setup below for first time setup/configuration.

    note: You can easily access your repository in a command prompt inside Git Extensions -> Git Bash (2nd icon to the left of Filter)

    • Pull latest from develop branch (git pull)
    • Create a feature branch (or fix/issue etc.):
    git flow feature start somefeature
    (More examples:  issue6750      or    sys_attachments_improvements    or    geardialog-improvements)
    • Start your work
      (NOTE: If this work is going to take longer than a day, it is recommended you make proper backups from your repository/work. Pushing the feature branch to remote is possible too, however, rebasing is then strictly prohibited!)
    • Commit your work step by step (This is the major improvement over previous model)
    • Optionally merge the latest develop branch or rebase on it, and repeat work+commit.
      git merge develop  or   git rebase develop
    • When finished, merge your work back to develop branch:
    git flow feature finish somefeature
    • (or delete the branch incase you don't want to use the result)
    • If there are any merge conflicts, solve them, follow instructions from git flow
    • When successful, git pull and git push to push your changes to the online repository

    +example

     

    You can track someone else's feature, if they have published it.

    It is very important that you use git flow for this, as for instance Git Extensions, will cut off "feature/", which could mean you create a new branch when pushing things back.

    git flow feature track <name>

    Publishing a feature to remote repository (Remember, may not rebase anymore if you do!):

    git flow feature publish <name>

     

    Easy diff’ing of all changes on a specific (or the current) feature branch:

    git flow feature diff [feature]

     

    Feature branch rebasing:

    git flow feature rebase

     

    This is the end section for developers.

     

    Releasing Ongoing Development Updates

    The following is for managers.

    • Pull latest from develop
    • Buildtest, create a feature branch incase of issues, merge back to the develop branch once completed.
    • Release through six-arma-builder
    • Push changes back to origin/develop.

     

    Releasing Milestones

    The following is for managers.

    • Pull latest from develop
    • Create release branch:
    git flow release start '1.1.10'
    • Bump the version number
    • Do final fixups and tests.
    • When finished, merge the release back to develop and stable branch:
    git flow release finish '1.1.10'

    Hotfixing

    The following is for managers.

    Incase of severe issues, we might want to hotfix a Milestone release.

    • Pull latest from stable branch
    • Create hotfix branch:
    git flow hotfix start '1.1.12'
    • Apply fixes (commit)
    • Test
    • When finished, merge the hotfix back to develop and stable branch:
    git flow hotfix finish '1.1.12'


    Setup

     

    Git

     

    Download Binaries and Dependencies zip files (not setup) and install getopt.exe from the util-linux package into C:\Program Files\Git\local\bin. (Only getopt.exe, the others util-linux files are not used). Also install libintl3.dll from the Dependencies package, into the same directory.

    Clone the git-flow sources from GitHub:

    $ git clone --recursive git://github.com/nvie/gitflow.git
    $ cd gitflow
    

     

    If using a GUI without a recursive option for cloning, make sure to update all submodules. This should populate the shFlags directory.

     

    Optionally, download slightly modified msysgit-install.cmd (installs to local/bin, adds pause for reading output) 

     

    Run the msysgit-install script from a command-line prompt (you may have to run it with "Full Administrator" rights if you installed msysgit with its installer):

    C:\gitflow> contrib\msysgit-install.cmd

    Source

     

     

    Git installed, with gitflow extension:
     - gitflow 0.2.1 (using Cygwin) - Unpack to \Program Files\Git\bin
      or
    ...

     

    Repository

    If you have the original ACE git repository, please follow a).

    For new clones, please see b).

     

    a) Conversion

    • Commit your open work to master, or remove all open changes.
      This branch will not be useful anymore later, but it will remain until you delete it (after you've exported your changes etc.)
    • Git pull
    • Setup the new tracking branches and prune old ones:
    git checkout --track -b stable origin/stable
    git checkout --track -b develop origin/develop
    git remote prune origin
    
    Or if you prefer you can do it in +gitextensions
    • Reapply your open work if you had any.
    • Delete any dead branches, like master:
      • List the branches in a work folder using "git branch -a"
      • Delete the unwanted ones using "git branch -d nameofbranch"
    • See below how to enable gitflow.

    b) Cloning

    • Clone the repository, setup stable branch tracking.
    git clone git@git.dev-heaven.net:ace.git
    cd ace
    git checkout --track -b stable origin/stable
    git checkout develop

    See below how to enable gitflow.

     

    Enable gitflow

    • Inside the repository:
    git flow init

    Production branch -> stable (The rest all default (enter). Development branch -> develop)

     


    Rebase Notes

    • Use Rebase inside your local branches to rebase your work on top of the latest develop branch (incase there have been changes.
      This will ensure (once you want to merge it to the develop branch) your merge will be without conflicts, aswell as allows you to work with the latest source, inside your topic branch.
    • Never use Rebase on remote branches. Or never rebase commits that have been received by servers/other devs.
    • If you treat rebasing as a way to clean up and work with commits before you push them, and if you only rebase commits that have never been available publicly, then you’ll be fine. If you rebase commits that have already been pushed publicly, and people may have based work on those commits, then you may be in for some frustrating trouble.

     

    Sources


    Next subject, Creating working patches: Patching

     

    Note to self: Need to block merges or pushes alltogether on the stable branch. (and master, just to prevent users from recreating it :P)

    #!/bin/sh # # An example hook script to blocks unannotated tags from entering. # Called by git-receive-pack with arguments: refname sha1-old sha1-new # # To ...