You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by bu...@apache.org on 2012/12/03 09:56:42 UTC

svn commit: r840460 - in /websites/staging/isis/trunk: cgi-bin/ content/ content/contributors/about.html content/contributors/git-workflow.html content/contributors/using-git.html content/documentation.html

Author: buildbot
Date: Mon Dec  3 08:56:41 2012
New Revision: 840460

Log:
Staging update by buildbot for isis

Added:
    websites/staging/isis/trunk/content/contributors/git-workflow.html
Modified:
    websites/staging/isis/trunk/cgi-bin/   (props changed)
    websites/staging/isis/trunk/content/   (props changed)
    websites/staging/isis/trunk/content/contributors/about.html
    websites/staging/isis/trunk/content/contributors/using-git.html
    websites/staging/isis/trunk/content/documentation.html

Propchange: websites/staging/isis/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Dec  3 08:56:41 2012
@@ -1 +1 @@
-1415450
+1416379

Propchange: websites/staging/isis/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Dec  3 08:56:41 2012
@@ -1 +1 @@
-1415450
+1416379

Modified: websites/staging/isis/trunk/content/contributors/about.html
==============================================================================
--- websites/staging/isis/trunk/content/contributors/about.html (original)
+++ websites/staging/isis/trunk/content/contributors/about.html Mon Dec  3 08:56:41 2012
@@ -194,6 +194,7 @@
 
 <ul>
 <li><a href="using-git.html">Using Git</a></li>
+<li><a href="git-workflow.html">Git workflow</a></li>
 <li><a href="coding-conventions.html">Coding conventions</a></li>
 <li><a href="updating-the-cms-site.html">Updating the CMS site</a></li>
 <li><a href="release-process.html">Release process</a></li>

Added: websites/staging/isis/trunk/content/contributors/git-workflow.html
==============================================================================
--- websites/staging/isis/trunk/content/contributors/git-workflow.html (added)
+++ websites/staging/isis/trunk/content/contributors/git-workflow.html Mon Dec  3 08:56:41 2012
@@ -0,0 +1,486 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+
+    <meta charset="utf-8">
+      <title>git workflow
</title>
+    <meta name="description" content="">
+    <meta name="author" content="">
+
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
+    <!--[if lt IE 9]>
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+
+    <!-- Le styles -->
+    <link href="./../bootstrap.css" rel="stylesheet">
+    <link href="./../prettify.css" rel="stylesheet">
+    <link href="./../bootstrap-mods.css" rel="stylesheet">
+
+    <style type="text/css">
+        body {
+          padding-top: 60px;
+        }
+        .sprite {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../images/sprites.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .edit-page {
+            display: inline-block;
+            height: 20px;
+            margin: 0 auto 4px;
+            outline: medium none;
+            text-indent: -999em;
+            width: 24px;
+            background-image: url('./../images/edit.png');
+            background-repeat: no-repeat;
+            overflow: hidden;
+            cursor: pointer;
+        }
+        .fb-share {
+            background-position: 0px -40px;
+        }
+        .gp-share {
+            background-position: 0px 0px;
+        }
+        .tw-share {
+            background-position: 0px -80px;
+        }
+        .markdown-content {
+            min-height: 500px;
+        }
+        .book-image img {
+          border: 1px;
+          border-style: solid;
+        }
+        .stub {
+            position: relative;
+            padding: 7px 15px;
+            margin-bottom: 18px;
+            color: #404040;
+            background-color: #eedc94;
+            background-repeat: repeat-x;
+            background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
+            background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
+            background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
+            background-image: -o-linear-gradient(top, #fceec1, #eedc94);
+            background-image: linear-gradient(top, #fceec1, #eedc94);
+            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
+            text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+            border-color: #eedc94 #eedc94 #e4c652;
+            border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+            text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+            border-width: 1px;
+            border-style: solid;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            border-radius: 4px;
+            -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+        }
+    </style>
+    <script type="text/javascript">
+      function fbshare () {
+          window.open(
+                  "http://www.facebook.com/sharer/sharer.php?u="+document.URL,
+                  'Share on Facebook',
+                  'width=640,height=426');
+      };
+      function gpshare () {
+          window.open(
+                  "https://plus.google.com/share?url="+document.URL,
+                  'Share on Google+',
+                  'width=584,height=385');
+      };
+      function twshare () {
+          window.open(
+                  "https://twitter.com/intent/tweet?url="+document.URL+"&text=git workflow
",
+                  'Share on Twitter',
+                  'width=800,height=526');
+      };
+    </script>
+
+    <!-- Le fav and touch icons -->
+    <link rel="shortcut icon" href="./../images/favicon.ico">
+    <link rel="apple-touch-icon" href="./../images/apple-touch-icon.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="./../images/apple-touch-icon-72x72.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="./../images/apple-touch-icon-114x114.png">
+
+    <script src="./../javascript/prettify.js" type="text/javascript"></script>
+    <script src="./../javascript/jquery-latest.js"></script>
+    <script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
+    <script src="./../javascript/common.js"></script>
+    <script src="./../javascript/prettyprint.js"></script>
+
+    <script type="text/javascript">
+
+      var _gaq = _gaq || [];
+      _gaq.push(['_setAccount', 'UA-2717626-1']);
+      _gaq.push(['_setDomainName', 'apache.org']);
+      _gaq.push(['_trackPageview']);
+
+      (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+      })();
+
+    </script>
+
+
+  </head>
+
+  <body>
+
+    <div class="topbar">
+      <div class="fill">
+        <div class="container">
+          <a class="brand" href="./../index.html">Apache Isis</a>
+          <ul class="nav">
+            <li><a href="./../index.html">Home</a></li>
+            <li><a href="./../download.html">Download</a></li>
+            <li><a href="./../documentation.html">Documentation</a></li>
+            <li><a href="./../support.html">Support</a></li>
+          </ul>
+
+            <!-- Google CSE Search Box Begins -->
+            <div style="float: right; position: relative; ">
+          <form action="http://www.google.com/cse" id="cse-search-box" _lpchecked="1">
+            <div>
+                <input type="hidden" name="cx" value="001500763902520246267:purt3m54z98">
+                <input type="hidden" name="ie" value="UTF-8">
+                <input type="text" name="q" size="31" style="border: 1px solid rgb(126, 157, 185); padding: 2px; background-color: rgb(255, 255, 255); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">
+                <input type="submit" name="sa" value="Search">
+            </div>
+            <input name="siteurl" type="hidden" value="incubator.apache.org/isis/">
+            <input name="ref" type="hidden" value="">
+            <input name="ss" type="hidden" value="677j458329j2">
+        </form>
+        </div>
+            <!-- Google CSE Search Box Ends -->
+        </div>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="markdown-content">
+      
+
+<div class="page-header">
+<p><a href="./../documentation.html">Docs</a>&nbsp;&raquo&nbsp;<a href="./../contributors/about.html">Contributors</a></p>
+<h1>git workflow
+
+<!--
+    <div style="float: right; position: relative; bottom: -10px; ">
+        <a onclick="javascript:gpshare()" class="gp-share sprite" title="share on Google+">share [gp]</a>
+        <a onclick="javascript:fbshare()" class="fb-share sprite" title="share on Facebook">share [fb]</a>
+        <a onclick="javascript:twshare()" class="tw-share sprite" title="share on Twitter">share [tw]</a>
+        <a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
+    </div>
+-->    
+</h1>
+</div>
+
+<p>This page explains how you can contribute to Apache Isis.  Thanks for considering to help out, your contributions are appreciated!</p>
+
+<p><em>There is some overlap between this material and that in <a href="using-git.html">Using Git</a> page.  We intend to merge the two pages; for now, please read both.</em></p>
+
+<h2>Identify Work</h2>
+
+<p><a href="https://issues.apache.org/jira/browse/ISIS">JIRA</a> and the <a href="http://isis.apache.org/support.html">mailing lists</a> are great places to start. If you have your own ideas to improve or extend Isis it's a good practice to create a ticket in JIRA and/or discuss this in the mailing lists. You probably get some useful feedback and support.</p>
+
+<h2>Clone the Isis source code</h2>
+
+<p>Isis' source code is hosted in an Apache git repo (<a href="https://git-wip-us.apache.org/repos/asf/isis.git">https</a>, <a href="http://git-wip-us.apache.org/repos/asf/isis.git">http</a>), with a clone on github (<a href="https://github.com/apache/isis.git">https</a>, <a href="git@github.com:apache/isis.git">ssh</a>).</p>
+
+<p><strong>If you are a committer</strong> then you can clone directory from the Apache git repo:</p>
+
+<pre>
+git clone https://git-wip-us.apache.org/repos/asf/isis.git apache-isis
+cd apache-isis
+git checkout -t origin/master
+</pre>
+
+<p>This will set up your local <code>master</code> branch as a tracking branch of the <code>origin/master</code> branch.</p>
+
+<p><strong>If you are not a committer</strong> but would like to contribute patches then the easiest thing is probably to create a fork in github.  You use this fork to (a) provide an initial copy of the code, and (b) provide a place to share your changes with the project maintainers, generating patches etc.</p>
+
+<p>You can create a fork through the github website; you'll end up with a repo called something like <code>https://github.com/yourname*/isis.git</code>.  Once created, you should clone your new fork to your computer.  On Windows, use github's 'Clone in Windows' feature; on Mac/Linux create a clone from the command line:</p>
+
+<pre>
+git clone https://github.com/<i>yourname</i>/isis.git apache-isis
+cd apache-isis
+git checkout master
+</pre>
+
+<p>What you'll also want to do is to add a remote to the original Apache Isis repo that you forked.  This remote is traditionally called <code>upstream</code>.  You should then arrange for your <code>master</code> branch to track the <code>upstream/master</code> remote branch:</p>
+
+<pre>
+git remote add upstream https://github.com/apache/isis.git
+git branch --set-upstream master upstream/master
+</pre>
+
+<p>You can now fetch any more recent commits from the upstream repo using simply:</p>
+
+<pre>
+git fetch
+</pre>
+
+<p>Because you've just created your fork, most likely the upstream's <code>master</code> branch will be the same as your local <code>master</code> and your github fork's <code>origin/master</code> (all three will point to the same commit).  Use <code>gitk --all</code> to confirm.</p>
+
+<p>For more info on tracking branches <a href="http://git-scm.com/book/en/Git-Branching-Remote-Branches">here</a> and <a href="http://gitready.com/beginner/2009/03/09/remote-tracking-branches.html">here</a>.</p>
+
+<h2>Sample Git Workflow</h2>
+
+<p>For this example, suppose that you've decided to work on JIRA ticket #123, an enhancement to support Blob/Clob datatypes.</p>
+
+<h4>Update your master branch</h4>
+
+<p>We're assuming you have cloned the Isis repository as per the example above. Let's first make sure your fork is up-to-date, by retrieving new commits from upstream repo and then merging them as a fast-forward into your local branch.</p>
+
+<p>If a committer, your upstream is simply the <code>origin</code>.  If not a committer, your upstream is the <code>upstream</code> remote.  In either case, because your local <code>master</code> branch is tracking the appropriate remote's <code>master</code> branch, the same commands work:</p>
+
+<pre>
+git checkout master
+git fetch
+git merge --ff-only
+</pre>
+
+<p>Alternatively, you can combine the <code>git fetch</code> and <code>git merge</code> and just use <code>git pull</code>:</p>
+
+<pre>
+git checkout master
+git pull --ff-only
+</pre>
+
+<p>If the <code>merge</code> or <code>pull</code> fails, it means that you must have made commits and there have been changes meanwhile on the remote <code>master</code>'s branch.  Use <code>gitk --all</code> to confirm.  There's a procedure below to retrospectively sort out this situation.</p>
+
+<h4>Create a topic branch</h4>
+
+<p>We recommend you name topic branches by the JIRA ticket, ie <tt>ISIS-nnn-description</tt>.   So let's create a new branch based off <code>master</code> and call it "ISIS-123-blobs"</p>
+
+<pre>
+git checkout master
+git checkout -b ISIS-123-blobs
+</pre>
+
+<p>You can confirm the branch is there and is your new <code>HEAD</code> using either <code>gitk --all</code>.  Alternatively, use the command line:</p>
+
+<pre>
+$ git branch
+master
+* ISIS-123-blobs
+</pre>
+
+<p>The command line prompt should also indicate you are on a branch, isolated from any changes that might happen on the <code>master</code> branch.</p>
+
+<h3>Make File Changes and Commit</h3>
+
+<p>Next, make changes to your files using the usual commands:</p>
+
+<ul>
+<li><code>git add</code></li>
+<li><code>git mv</code></li>
+<li><code>git rm</code></li>
+<li><code>git commit</code></li>
+<li><code>git status</code></li>
+</ul>
+
+<p>and so on.</p>
+
+<p>Continue this way until happy with the change.  Remember to run all your tests on the topic branch (including a full <code>mvn clean install</code>).</p>
+
+<h3>Reintegrating with <code>master</code></h3>
+
+<p>Before you can share your change, you should reintegrate your changes with the <code>master</code> branch.  </p>
+
+<p>The first thing to do is to pull down any changes made in upstream remote's <code>master</code> since you started your topic branch:</p>
+
+<pre>
+git checkout master
+git pull --ff-only
+</pre>
+
+<p>These are the same commands that you would have run before you created your topic branch.  If you use <code>gitk --all</code>, there's a good chance that new commits have come in.</p>
+
+<p>If you are a committer, you'll see that the remote <code>origin/master</code> has most likely advanced.  If you are not a committer, you'll similarly see that the remote <code>upstream/master</code> has advanced.  (For non-committers, the <code>origin/master</code> won't ever advance because this is simply your fork taken a while back).</p>
+
+<p>Because you've been working in a topic branch, your local <code>master</code> branch and the remote <code>master</code> branch's should be pointing to the same commit.</p>
+
+<p>Next, we reintegrate our topic branch by rebasing onto master:</p>
+
+<pre>
+git checkout ISIS-123-blobs
+git rebase master
+</pre>
+
+<p>This takes all of the commits in your branch, and applies them on top of the new <code>master</code> branch.  When your change is eventually integrated back in, it will result in a nice clear linear history on the public repo.</p>
+
+<h3>Committers only: pushing the changes</h3>
+
+<p><strong>If you are a committer</strong>, you can now simply do a fast forward merge of master, and then push the changes:</p>
+
+<pre>
+git checkout master
+git merge --ff-only ISIS-123-blobs
+git push
+</pre>
+
+<p>Because the <code>master</code> branch is a direct ancestor of the topic branch, the fast-forward merge should work.  The <code>git push</code> then pushes those changes back to the master Isis repo.</p>
+
+<p>To clean up, you can delete your topic branch:</p>
+
+<pre>
+git branch -d ISIS-123-blobs
+</pre>
+
+<p>And committers are done.</p>
+
+<h3>Non-committers: Making your branch available remotely</h3>
+
+<p>For non-committers, your changes must be applied by a project maintainer.  So what you need to do is make those code changes available for review.  This is where your Github fork comes in.</p>
+
+<p>Make sure you've checked out your topic branch, and the push the changes to github (<code>origin</code> remote):</p>
+
+<pre>
+git checkout ISIS-123-blobs
+git push -u origin ISIS-123-blobs
+</pre>
+
+<p>This will create a corresponding branch in the remote github repo.  If you use <code>gitk --all</code>, you'll also see a <code>remotes/origin/ISIS-123-blobs</code> branch.</p>
+
+<p>With your topic branch onto your fork, an Isis maintainer can review and merge the topic branch into the main repository.</p>
+
+<p>The easiest way to inform the Isis maintainer is by raising a <em>pull request</em> in Github.  Pull requests sent to the Apache GitHub repositories should forward a pull request e-mail to the <a href="../support.html">dev mailing list</a>, so we recommend that you sign up to the dev mailing list first before issuing your pull request.  </p>
+
+<p>To raise the pull request:</p>
+
+<ul>
+<li>Open a web browser to your GitHub account's Isis fork.</li>
+<li>Select your topic branch so that the pull request references the topic branch.</li>
+<li>Click the Pull Request button.</li>
+<li>Notifying the Mailing List</li>
+</ul>
+
+<p>Assuming you've already subscribed to the dev mailing list, you can check that your request came through.</p>
+
+<h4>If your pull request is accepted</h4>
+
+<p>To double check that your pull request is accepted, update your <code>master</code> branch from the <code>upstream</code> remote:</p>
+
+<pre>
+git checkout master
+git pull
+</pre>
+
+<p>You can then use <code>gitk --all</code> (or <code>git log</code> if you prefer the command line) to check your contribution has been added.</p>
+
+<p>You can now delete your topic branch and remove the branch in your github:</p>
+
+<pre>
+git branch -D ISIS-123-blobs
+git push origin --delete ISIS-123-blobs
+</pre>
+
+<p>Finally, you probably want to push the latest changes in master back up to github.</p>
+
+<pre>
+git checkout master
+git push origin master
+</pre>
+
+<h4>If your pull Request is rejected</h4>
+
+<p>In this case, you just need to update your branch from the main repository and then address the rejection reason.</p>
+
+<pre>
+git checkout master
+git pull
+git checkout ISIS-123-blogs
+git rebase master
+</pre>
+
+<p>You'll probably also want to remove the remote branch on github:</p>
+
+<pre>
+git push origin --delete ISIS-123-blobs
+</pre>
+
+<p>... and continue as before until you are ready to resubmit your change.</p>
+
+<h2>If you've accidentally worked on <code>master</code> branch</h2>
+
+<p>If at any time the <code>git pull</code> from your upstream fails, it most likely means that you must have made commits on the <code>master</code> branch.  You can use <code>gitk --all</code> to confirm; at some point in time both <code>master</code> and <code>origin\master</code> will have a common ancestor.</p>
+
+<p>You can retrospectively create a topic branch for the work you've accidentally done on <code>master</code>.  </p>
+
+<p>First, create a branch for your current commit:</p>
+
+<pre>
+git branch <i>newbranch</i>
+</pre>
+
+<p>Next, make sure you have no outstanding edits.  If you do, you should commit them or stash them:</p>
+
+<pre>
+git stash
+</pre>
+
+<p>Finally, locate the shaId of the commit you want to roll back to (easily obtained in <code>gitk -all</code>), and wind <code>master</code> branch back to that commit:</p>
+
+<pre>
+git checkout master
+git reset --hard <i>shaId</i>      # move master branch shaId of common ancestor
+</pre>
+
+
+
+      </div>
+
+        <div id="edit" class="modal hide fade in" style="display: none; ">
+            <div class="modal-header">
+                <a class="close" data-dismiss="modal">x</a>
+
+                <h3>Thank you for contributing to the documention!</h3>
+            </div>
+            <div class="modal-body">
+                <h4>Any help with the documentation is greatly appreciated.</h4>
+                <p>All edits are reviewed before going live, so feel free to do much more than fix typos or links.  If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it.  Don't be surprised if we like it so much we ask you for help with other pages :)</p>
+                <small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
+                <!--[if gt IE 6]>
+                <h4>Internet Explorer Users</h4>
+                <p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
+                <![endif]-->
+
+            </div>
+            <div class="modal-footer">
+                Do you have an Apache ID?
+                <a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
+                <a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
+            </div>
+        </div>
+        <script src="./../javascript/bootstrap-modal.js"></script>
+
+      <footer>
+        <p>
+        Copyright &copy; 2012 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
+        <br/>
+        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
+        </p>
+      </footer>
+
+    </div> <!-- /container -->
+
+  </body>
+</html>

Modified: websites/staging/isis/trunk/content/contributors/using-git.html
==============================================================================
--- websites/staging/isis/trunk/content/contributors/using-git.html (original)
+++ websites/staging/isis/trunk/content/contributors/using-git.html Mon Dec  3 08:56:41 2012
@@ -192,7 +192,7 @@
 </h1>
 </div>
 
-<p><em>See <a href="https://issues.apache.org/jira/browse/INFRA-5502">INFRA-5502</a> for current status on our move from svn to git</em></p>
+<p><em>There is some overlap between this material and that in <a href="git-workflow.html">Git workflow</a>.  We intend to merge the two pages; for now please read both.</em></p>
 
 <h2>Introduction</h2>
 
@@ -251,12 +251,64 @@
 
 <p>If using Mac, you might also want to check out Atlassian's <a href="http://www.atlassian.com/software/sourcetree/overview">Sourcetree</a>.</p>
 
-<h4>Git clone</h4>
+<h4>Cloning the Isis repo and Configuring</h4>
+
+<p>First, clone the Isis repo (nb: pending completion of <a href="https://issues.apache.org/jira/browse/INFRA-5502">INFRA-5502</a>)</p>
+
+<pre>
+git clone https://git-wip-us.apache.org/repos/asf/isis.git
+</pre>
+
+<p>As per <a href="https://git-wip-us.apache.org/">Apache's Git page</a>, you should then configure your user name and password:</p>
+
+<pre>
+git config user.name "<i>My Name Here</i>"
+git config user.email <i>myusername@apache.org</i>
+</pre>
+
+<p>And (again as recommended by <a href="https://git-wip-us.apache.org/">Apache's Git page</a>), you should also configure the <code>core.autocrlf</code> so that line endings are normalized to LF (Unix style) in the repo.</p>
+
+<ul>
+<li>on Windows, use:</li>
+</ul>
+
+<pre>git config core.autocrlf auto   
+</pre>
+
+<ul>
+<li>on Mac/Linux, use:</li>
+</ul>
+
+<pre>
+git config core.autocrlf input
+</pre>
+
+<p>The Windows setting means that files are converted back to CRLF on checkout; the Mac/Linux setting means that the file is left as LF on checkout.</p>
+
+<p>We also recommend setting <code>core.safecrlf</code>, which aims to ensure that any line ending conversion is repeatable.  Do this on all platforms:</p>
+
+<pre>
+git config core.safecrlf true
+</pre>
+
+<p>Note that these settings are supplemented in the repo by the <code>.gitattributes</code> file and that explicitly specifies line handling treatment for most of the common file types that we have.</p>
+
+<p>One final configuration that we recommend is for <code>git pull</code> to perform a rebase by default, rather than a merge.  This results in a linear log history.  If you want to explicitly have branches in the history, then you can always create a topic branch, discussed below:</p>
 
 <pre>
-git clone url  # awaiting url, pending completion of INFRA-5502
+git config branch.autosetuprebase always
 </pre>
 
+<p>If you don't use git outside of Apache, you can add the <code>--global</code> flag so that the above settings apply for all repos managed by git on your PC.</p>
+
+<p>For further reading, see:</p>
+
+<ul>
+<li><a href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html">git config man page</a></li>
+<li><a href="http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html">.gitattributes man page</a></li>
+<li><a href="http://git-scm.com/docs/gitattributes">.gitattributes git-scm.com docs</a></li>
+</ul>
+
 <h4>Commit message format</h4>
 
 <p>Commit messages should follow the format:</p>

Modified: websites/staging/isis/trunk/content/documentation.html
==============================================================================
--- websites/staging/isis/trunk/content/documentation.html (original)
+++ websites/staging/isis/trunk/content/documentation.html Mon Dec  3 08:56:41 2012
@@ -224,6 +224,7 @@
 
 <h3>Contributors</h3></li>
 <li><a href="contributors/using-git.html">Using Git</a></li>
+<li><a href="contributors/git-workflow.html">Git workflow</a></li>
 <li><a href="contributors/coding-conventions.html">Coding Conventions</a> [stub]</li>
 <li><a href="contributors/updating-the-cms-site.html">Updating the CMS site</a></li>
 <li><a href="contributors/release-process.html">Release process</a> [wip]</li>