Skip to content

Instantly share code, notes, and snippets.

@cuberri
Last active August 29, 2015 13:56
Show Gist options
  • Select an option

  • Save cuberri/9335863 to your computer and use it in GitHub Desktop.

Select an option

Save cuberri/9335863 to your computer and use it in GitHub Desktop.
Sample mercurial workflow : changelog generation strategy in feature branching
#
# repository initialization
#
hg init helloworld && cd helloworld
echo 'hello!' > helloworld.txt
hg add
hg ci -m 'added a dumb file to init the repo of this example'
# necessary tricky tag for the first changelog generation :(
hg tag 0.0.0
#
# feature 1
#
hg branch feature1
echo 'feature1' >> helloworld.txt
hg ci -m 'added feature1 just for the example'
#
# embed feature 1 for release
#
hg up default
hg branch develop
hg merge feature1
hg ci -m '[changelog] Feature 1 on board!'
#
# release 1.0.0 - VERSION and CHANGELOG initialization
#
hg up default
hg branch release
hg merge develop
hg ci -m 'merged develop, preparing version 1.0.0'
echo '1.0.0' > VERSION
(echo 'v1.0.0' ; hg changelog) > CHANGELOG
hg add
hg ci -m 'finished preparing version 1.0.0'
hg up default
hg merge release
hg ci -m 'merged release, ready for tag 1.0.0'
hg tag 1.0.0
hg up develop
hg merge release
hg ci -m "merged release, ready for other features"
#
# feature 2
#
hg branch feature2
echo 'feature2' >> helloworld.txt
hg ci -m 'added awesome feature2'
hg up develop
hg merge feature2
hg ci -m "[changelog] embedding feature2 for the next release"
#
# feature 3
#
hg branch feature3
echo 'feature3' >> helloworld.txt
hg ci -m '[changelog] a great commit, worth mentioning it in the CHANGELOG file'
hg up develop
hg merge feature3
hg ci -m "[changelog] embedding feature3 for the next release too"
#
# feature 4
#
hg up develop
hg branch feature4
echo 'feature4' >> helloworld.txt
hg ci -m '[changelog] commit for feature4. Should not appear in the 2.0.0 changelog'
#
# release 2.0.0 - feature2 and feature3
#
hg up release
hg merge develop
hg ci -m 'preparing version 2.0.0'
echo '2.0.0' > VERSION
(echo 'v2.0.0'; hg changelog) >> CHANGELOG
hg ci -m 'finished preparing version 2.0.0'
hg up default
hg merge release
hg ci -m 'merged release, ready for tag 2.0.0'
hg tag 2.0.0
hg up develop
hg merge release
hg ci -m "merged release, ready for other features"
#
# release 3.0.0 - feature 4
#
hg merge feature4
hg ci -m "[changelog] get feature4"
hg up release
hg merge develop
hg ci -m 'preparing version 3.0.0'
echo '3.0.0' > VERSION
(echo 'v3.0.0'; hg changelog) >> CHANGELOG
hg ci -m 'finished preparing version 3.0.0'
hg up default
hg merge release
hg ci -m 'merged release, ready for tag 3.0.0'
hg tag 3.0.0
hg up develop
hg merge release
hg ci -m "merged release, ready for other features"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment