about summary refs log tree commit diff stats
path: root/dev
diff options
context:
space:
mode:
authorSilvino Silva <silvino@bk.ru>2016-09-20 17:21:19 +0100
committerSilvino Silva <silvino@bk.ru>2016-09-20 17:23:50 +0100
commite77894b32b609572f46e30d25372166016b500d4 (patch)
tree8404e76df6a42337cbd47b62bc6117316ad368f0 /dev
parent57357dd36c87022bbe0fcd5e812861d67a81a68d (diff)
downloaddoc-e77894b32b609572f46e30d25372166016b500d4.tar.gz
added dev git
Diffstat (limited to 'dev')
-rw-r--r--dev/git.html242
1 files changed, 242 insertions, 0 deletions
diff --git a/dev/git.html b/dev/git.html
new file mode 100644
index 0000000..fdae528
--- /dev/null
+++ b/dev/git.html
@@ -0,0 +1,242 @@
+<!DOCTYPEhtml>
+<htmldir="ltr" lang="en">
+<head>
+    <meta charset='utf-8'>
+    <title>Git</title>
+</head>
+<body>
+
+    <a href="index.html">Dev Index</a>
+    <h1>Git</h1>
+
+    <p>First configure your global identity, configuration
+    file resides on ~/.gitconfig ;</p>
+
+    <pre>
+       $ git config --global user.name "User Name"
+       $ git config --global user.email user@devbox
+    </pre>
+
+    <p>Assumptions of this document;</p>
+
+    <ul>
+        <li>Correct
+            <a href="../tools/gitolite.html#adminusers">user account</a>
+            exists on git server or is public readable.
+        </li>
+        <li>Repository exists or
+            <a href="../tools/gitolite.html#adminrep">create one</a>
+            if you have permissions. This document uses atom as example.
+        </li>
+        <li>Correct
+            <a href="../tools/openssh.html#sshid">ssh identities</a>,
+            and profile alias have been setup. This document uses devbox as example.
+        </li>
+    </ul>
+
+    <h2 id="teamwork">Team WorkFlow</h2>
+
+    <p>This work flow is based on
+    <a href="http://nvie.com/posts/a-successful-git-branching-model/">Vicent Driessen</a>,
+    development model, it defines rules how branches are forked,
+    merged and tagged. By having well defined set of branches,
+    the project structure is used as a communication tool,
+    allowing to work simultaneously on different stages
+    of the development.</p>
+
+    <pre>
+       $ git clone devbox:atom
+       $ git remote -v
+    </pre>
+
+
+    <h3>Main Branches;</h3>
+
+    <dl>
+        <dt>master</dt>
+        <dd>Current official stable release history.</dd>
+        <dt>release</dt>
+        <dd>Next release, new features not allowed.</dd>
+        <dt>develop</dt>
+        <dd>Integration branch for features.</dd>
+    </dl>
+
+    <h3>Add-on Branches;</h3>
+
+    <dl>
+        <dt>feature</dt>
+        <dd>New features, improvement proposal, tests, etc...</dd>
+        <dt>hotfix</dt>
+        <dd>Hotfix is branched of master and should only contain isolated bugfixes.</dd>
+    </dl>
+
+    <h2 id="feature">Feature</h2>
+
+    <p>Create a branch and checkout;</p>
+
+    <pre>
+    $ git checkout -b featurex develop
+    </pre>
+
+    <p>Push new branch to server</p>
+
+    <pre>
+    $ git push -u origin featurex
+    </pre>
+
+    <p>Rename a branch;</p>
+
+    <pre>
+        $ git branch -m featurex feature-x
+    </pre>
+
+    <p>Rename remote branch;</p>
+
+    <pre>
+        $ git push origin :featurex feature-x
+        $ git push origin -u feature-x
+    </pre>
+
+    <p>Merge branch feature into develop;</p>
+
+    <pre>
+       $ git checkout develop
+       Switched to branch 'develop'
+       $ git merge --no-ff feature-x
+       Updating ea1b82a..05e9557
+       (Summary of changes)
+       $ git push origin develop
+    </pre>
+
+    <p>Delete Local;</p>
+
+    <pre>
+       $ git branch -D feature-x
+    </pre>
+
+    <p>Delete Remote</p>
+
+    <pre>
+       $ git push origin :feature-x
+    </pre>
+
+    <h2 id="release">Release</h2>
+
+    <pre>
+       $ git checkout -b release-1.2 develop
+       Switched to a new branch "release-1.2"
+       $ ./bump-version.sh 1.2
+       Files modified successfully, version bumped to 1.2.
+       $ git commit -a -m "Bumped version number to 1.2"
+       [release-1.2 74d9424] Bumped version number to 1.2
+       1 files changed, 1 insertions(+), 1 deletions(-)
+    </pre>
+
+    <p>Only documentation or bugfixes are allowed in this
+    branch. When release is ready for production merge
+    and push to master;</p>
+
+    <pre>
+       $ git checkout master
+       Switched to branch 'master'
+       $ git merge --no-ff release-1.2
+       Merge made by recursive.
+       (Summary of changes)
+       $ git tag -a 1.2
+    </pre>
+
+    <p>Update branch develop with bugfixes from last release,
+    conflict will happen in next step</p>
+
+    <pre>
+       $ git checkout develop
+       Switched to branch 'develop'
+       $ git merge --no-ff release-1.2
+       Merge made by recursive.
+       (Summary of changes)
+    </pre>
+
+    <h2 id="hotfix">Hotfix</h2>
+
+    <p>This branch should never exist, ;)</p>
+
+    <pre>
+       $ git checkout -b hotfix-1.2.1 master
+       $ ./bump-version.sh 1.2.1
+       Files modified successfully, version bumped to 1.2.1
+       $ git commit -a -m "Bumped version number to 1.2"
+    </pre>
+
+    <pre>
+       $ git commit -m "Commit severe fixes"
+    </pre>
+
+    <pre>
+       $ git checkout master
+       Switched to branch 'master'
+       $ git merge --no-ff release-1.2.1
+       Merge made by recursive.
+       (Summary of changes)
+       $ git tag -a 1.2.1
+    </pre>
+
+    <p>Conflict will happen in next step</p>
+
+    <pre>
+       $ git checkout develop
+       Switched to branch 'develop'
+       $ git merge --no-ff release-1.2.1
+       Merge made by recursive.
+       (Summary of changes)
+    </pre>
+
+    <pre>
+       $ git -D hotfix-1.2.1
+    </pre>
+
+    <h2 id="tags">Tags</h2>
+
+    <pre>
+    $ git tag -m "this commit is tagged" -a "v1.8"
+    $ git push --follow-tags
+    </pre>
+
+    <p>Delete local and remote tag;</p>
+
+    <pre>
+    $ git tag -d v1.8
+    $ git push origin :refs/tags/v1.8
+    </pre>
+
+    <h2 id="local">Local Workflow</h2>
+
+    <p>Mark all deleted to commit;</p>
+
+    <pre>
+    $ git ls-files --deleted -z | xargs -0 git rm
+    </pre>
+
+    <p>Last commit that affected current path</p>
+
+    <pre>
+    $ git rev-list -n 1 HEAD -- .
+    $ git show f000 path/to/file
+    $ git diff --name-status f000 path/to/file
+    </pre>
+
+    <p>Undo a file to specific commit</p>
+
+    <pre>
+    $ git checkout f000^ -- path/to/file
+    </pre>
+
+    <a href="index.html">Dev Index</a>
+    <p>This is part of the SysDoc Manual.
+    Copyright (C) 2016
+    Silvino Silva.
+    See the file <a href="../fdl-1.3-standalone.html">Gnu Free Documentation License</a>
+    for copying conditions.</p>
+
+
+</body>
+</html>