expoweb/handbook/computing/qstart-git.html

88 lines
6.7 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2021-10-23 22:40:12 +01:00
<title>Handbook - Git Quick</title>
<link rel="stylesheet" type="text/css" href="../../css/main2.css" />
</head>
<body>
<h2 id="tophead">CUCC Expedition Handbook - Git Quick</h2>
<h1>Quick Reminder - Git</h1>
<h2>Version Control Software Reminders</h2>
<p><a href="https://merrigrove.blogspot.com/2014/02/why-heck-is-git-so-hard-places-model-ok.html"><img class="onright" src="gitcontentmodel.jpg" alt="git content model" /></a></p>
<p>This is NOT a tutorial. This is a set of reminders for people who already know all this stuff.</p>
<p>Since 2019 all use of version control software requires that you have <a href="keyexchange.html">key-pair setup</a> already set up before any of this will work on your own machine.</p>
<p>- check that you can get ssh working before trying to run git too</p>
2022-07-23 13:07:44 +01:00
<p>If you can get to the <em>expo laptop</em> try these commands on that first as the key exchange has already been done. If the key exchnage has not been done then none of this will work.</p>
<p>You can read or clone these repos without any control, but to write ("push") to them you will need to use <var>ssh://expo@expo.survex.com</var> and set up the <a href="keyexchange.html">key exchange</a>.</p>
<p>NOTE: always use user <var>'expo'</var> as the login user (<var>ssh://expo@...</var>) even though within git you will be identified by your own ssh key name.</p>
2021-10-23 22:40:12 +01:00
<p>Brendan wrote a guide to using git for expo on a Windows machine. It's worth reading: <a href="/expofiles/documents/idiots-guide-expo-git.pdf">Idiots guide to accessing expo git.pdf</a>.
<p>Open a terminal in a new directory, e.g. /tmp/experiments/ in which you want to create the repo. It will automatically create a folder with the repo name e.g.'troggle' in that directory.</p>
<dl>
<dt>loser (The survey data)</dt><dd>This is all the survex files. You need this if you are rearranging and editing a lot of survey files.
<tt>git clone ssh://expo@expo.survex.com/~/loser</tt> (read/write)<br>
or equivalently
<tt>git clone ssh://expo@expo.survex.com/home/expo/loser</tt><br>
or more compactly
2022-08-08 13:30:56 +01:00
<tt>git clone expo@expo.survex.com:loser</tt> the : is shorthand for relative to the home directory of the logged-in user, which is 'expo'.<br>
</dd>
<dt>drawings</dt><dd>These are the therion and tunnel cave vector drawing files. You need this if you are 'tunneling' a lot of cave surveys.<tt>git clone ssh://expo@expo.survex.com:drawings</tt> (read/write)</dd>
<dt>expoweb</dt><dd>These are all webpages, mostly the expo handbook. You need this only if you are editing a lot of handbook pages.<tt>git clone ssh://expo@expo.survex.com:expoweb</tt> (read/write)</dd>
<dt>troggle</dt><dd>This is the python code that runs troggle and generates 2,000 webpages of reports and tables. This is what you need for software development.<tt>git clone ssh://expo@expo.survex.com:troggle</tt> (read/write)</dd>
</dl>
<h3>git use on your machine</h3>
2022-07-23 13:07:44 +01:00
<img class="onright" width=45% src="https://wac-cdn.atlassian.com/dam/jcr:1523084b-d05a-4f5a-bd1a-01866ec09ca3/01%20A%20forked%20commit%20history.svg?cdnVersion=447">
<p>It's much neater to do
<tt>git fetch; git rebase origin master</tt>
than
<tt>git pull;</tt> which is equivalent to <tt>git fetch; git merge</tt>
when you have a local change and there are changes on the server. The rebase command
gives a nice linear log rather than trivial merges.
<p>See nice explanantion at <a href="">Merging vs. Rebasing</a>: "The git rebase command has a reputation for being magical Git voodoo that beginners should stay away from, but it can actually make life much easier for a team.."
2022-07-23 13:07:44 +01:00
<p>In VS code there is a "Pull (rebase)" command accessed from the "Push, Pull" option in the pull-down menu "..." in the <small>SOURCE CONTROL</small> window. Use that instead of the "Pull" option which is more obvious.
2020-04-30 23:11:55 +01:00
<h3>Using git</h3>
2021-10-23 22:40:12 +01:00
<p>In Git, there are five places your source can exist: <ul>
<li>a stash,
<li>your local working directory,
<li>an index (or staging area),
<li>a local repository,
<li>and a remote repository.
</ul>
Knowing that these places even <em>exist</em> is often the first conceptual impediment.
<p><a href="https://stevebennett.me/2012/02/24/10-things-i-hate-about-git/"><img class="onright" src="git-arrows31.png" alt="git bread &amp; butter commands subset" width="250" /></a>You may find these useful:</p>
<ul>
<ul>
<li><a href="https://ohshitgit.com/">Oh Shit, Git!?!</a></li>
<li><a href="https://learngitbranching.js.org/">Animated Git training</a></li>
<li><a href="https://merrigrove.blogspot.com/2014/02/why-heck-is-git-so-hard-places-model-ok.html">Why the Heck is Git so Hard?</a></li>
<li><a href="https://stevebennett.me/2012/02/24/10-things-i-hate-about-git/">10 things I hate about Git</a></li>
<li><a href="http://www.ndpsoftware.com/git-cheatsheet.html#loc=workspace;">git cheat sheet (clickable)</a></li>
</ul>
</ul>
<h3><a id="gitwindows"></a>Using git in Windows</h3>
<p>Do not use the official "git for Windows" client software as it doesn't understand symlinks in the WSL filesystem (which is what we use on Windows). Use VS Code which understands WSL or a command line git in a WSL terminal window.</p>
<p>"Git is a 4 handle, dual boiler espresso machine &ndash; when all you need is instant."</p>
<p>Once you've downloaded and installed a git client, the first step is to create what is called a checkout of the data management system. This creates a copy on your machine which you can edit to your heart's content. The command to initially check out ('clone') the entire expo data management system is:</p>
<p><code>git clone ssh://expo@expo.survex.com/~/expoweb</code></p>
<p>for subsequent updates</p>
2020-04-30 23:11:55 +01:00
<p><code>git update</code></p>
<p>will generally do the trick.</p>
<p>After you've made a change, commit it to you local copy with:</p>
<p><code>git commit</code> (you can specify filenames to be specific)</p>
<h3><a id="pageant"></a>Windows key gotcha</h3>
<p>The first time you do this on a Windows machine it will probably not work as it does not recognise the server key exchange. Fix this by running putty (downloading it from <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/">https://www.chiark.greenend.org.uk/~sgtatham/putty/</a>), and connecting to the server 'expo@expo.survex.com' (on port 22). Confirm that this is the right server. If you succeed in getting a shell prompt then ssh connection are working and git should be able to clone the repo, and send changes back.</p>
<p><img class="onleft" src="pageant-icon.jpg" alt="" /></p>
<p>For more detailed instructions on making Pageant work see <a href="fzconfig.html">the section in the middle of the Filezilla instructions</a> where it describes how to configure Pageant.</p>
<hr /></body>
</html>