summaryrefslogtreecommitdiff
diff options
authorMartin Packman <martin@zegami.com>2017-09-28 19:09:34 +0100
committerMartin Packman <martin@zegami.com>2017-09-28 19:09:34 +0100
commitd17559d4b8a55dfd18e4ff16a5e7aa2f45e8fbd1 (patch)
treea21b6cdcfe80c934613343129dbfea86b1a9ea86
parent8e28aeaa8fba6f1f76bfda7a460d623146e732b0 (diff)
checkpoint
-rw-r--r--css/theme/zegami.css19
-rw-r--r--index.html217
2 files changed, 227 insertions, 9 deletions
diff --git a/css/theme/zegami.css b/css/theme/zegami.css
index 0871883..cf23277 100644
--- a/css/theme/zegami.css
+++ b/css/theme/zegami.css
@@ -54,7 +54,6 @@ body {
color: #333;
font-weight: normal;
line-height: 1.2;
- letter-spacing: -0.08em;
text-shadow: none;
word-wrap: break-word; }
@@ -62,13 +61,14 @@ body {
font-size: 3.5em; }
.reveal h2 {
- font-size: 2.2em; }
+ font-size: 2.0em; }
.reveal h3 {
font-size: 1.4em; }
.reveal h4 {
- font-size: 1em; }
+ letter-spacing: -0.08em;
+ font-size: 1.4em; }
.reveal h1 {
text-shadow: none; }
@@ -156,9 +156,8 @@ body {
width: 90%;
margin: 20px auto;
text-align: left;
- font-size: 0.55em;
font-family: "Ubuntu Mono", monospace;
- line-height: 1.2em;
+ line-height: 1;
word-wrap: break-word;
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); }
@@ -170,8 +169,14 @@ body {
padding: 5px;
overflow: auto;
max-height: 400px;
+ font-size: 0.55em;
word-wrap: normal; }
+.reveal pre code.lang-shell {
+ font-size: 1em;
+ min-height: 400px;
+}
+
.reveal table {
margin: auto;
border-collapse: collapse;
@@ -260,18 +265,22 @@ body {
*********************************************/
.reveal .controls .navigate-left,
.reveal .controls .navigate-left.enabled {
+ display: none;
border-right-color: #3b759e; }
.reveal .controls .navigate-right,
.reveal .controls .navigate-right.enabled {
+ display: none;
border-left-color: #3b759e; }
.reveal .controls .navigate-up,
.reveal .controls .navigate-up.enabled {
+ display: none;
border-bottom-color: #3b759e; }
.reveal .controls .navigate-down,
.reveal .controls .navigate-down.enabled {
+ display: none;
border-top-color: #3b759e; }
.reveal .controls .navigate-left.enabled:hover {
diff --git a/index.html b/index.html
index bbd0ce3..e145f44 100644
--- a/index.html
+++ b/index.html
@@ -26,14 +26,20 @@
<div class="slides">
<section>
<h1>Breezy</h1>
-<h3>a platform for experiments in version control</h3>
+<h4>a platform for experiments in version control</h4>
<p>Martin Packman</p>
<p><a href="mailto:martin@zegami.com">martin@zegami.com</a></p>
+<aside class="notes">
+<p>Informal. Feel free to interrupt if need clarifying. Make note of longer
+questions for the end.</p>
+<p>Practice for pycon talk, feedback welcome, please say at end or email me.</p>
+</aside>
</section>
<section>
<ul>
-<li>intro and history</li>
-<li>problems to fix</li>
+<li>introduction to versioning</li>
+<li>a brief history of vcses</li>
+<li>problems with git</li>
<li>why breezy</li>
<li>bonus: python 3 porting notes</li>
</ul>
@@ -41,6 +47,209 @@
<section>
<h2>what is version control</h2>
</section>
+ <section>
+<p>a record at stages</p>
+<aside class="notes">
+<p>Don't need to save full copy per stage.</p>
+<p>In practice not just series, but a graph.</p>
+</aside>
+ </section>
+ <section>
+<p>make changes with confidence</p>
+ </section>
+ <section>
+<p>collaborate with others</p>
+ </section>
+ <section>
+<p>when, who, why of changes</p>
+ </section>
+ <section>
+<p>you should use vcs for all code</p>
+ </section>
+ <section>
+<h2>brief history</h2>
+ </section>
+ <section>
+<h3>local</h3>
+ </section>
+ <section>
+<ul><li>SCCS (1972)</li><li>RCS (1982)</li></ul>
+<aside class="notes">
+<p>Not widely used.</p>
+<p><a href="http://www.drdobbs.com/open-source/interview-with-ken-thompson/229502480">Interview with Ken Thompson</a> didn't use vsc when making unix (just saved checkpoints).</p>
+</aside>
+ </section>
+ <section>
+<h3>centralised</h3>
+ </section>
+ <section>
+<ul><li>CVS (1990)</li><li>SVN (2000)</li><li>many proprietary</li></ul>
+<aside class="notes">
+<p>Central server, multiple clients. Merge before commit.</p>
+</aside>
+ </section>
+ <section>
+<h3>distributed</h3>
+ </section>
+ <section>
+<ul><li>bitkeeper (2000)</li><li>arch (2001)</li><li>darcs (2001)</li></ul>
+<aside class="notes">
+<p>Commit before merge.</p>
+</aside>
+ </section>
+ <section>
+<p>2005</p>
+<ul><li>bzr</li><li>hg</li><li>git</li></ul>
+ </section>
+ <section>
+<p>what should I use?</p>
+<p class="fragment">git</p>
+<aside class="notes">
+<p>Use what everyone else uses.</p>
+</aside>
+ </section>
+ <section>
+<h2>git is not perfect</h2>
+ </section>
+ <section>
+<h3>Git: How to Do Things</h3>
+<p>see <a href="http://www.cs.cornell.edu/~asampson/blog/git.html">Adrian Sampson post</a></p>
+ </section>
+ <section>
+<p>revert your changes to a file</p>
+ </section>
+ <section>
+<pre><code class="lang-shell hljs" data-noescape="">$ git checkout HEAD -- <i>filename</i></code></pre>
+ </section>
+ <section>
+<p>revert all changes</p>
+ </section>
+ <section>
+<pre><code class="lang-shell hljs">$ git reset --hard</code></pre>
+ </section>
+ <section>
+<p>unadd a file</p>
+ </section>
+ <section>
+<pre><code class="lang-shell hljs" data-noescape="">$ git rm --cached <i>filename</i></code></pre>
+ </section>
+ <section>
+<h3>git and SHA-1</h3>
+ </section>
+ <section>
+<p><a href="https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html">Announcing the first SHA1 collision</a> (2017-02)</p>
+<aside class="notes">
+<p>Google announced Feb.</p>
+</aside>
+ </section>
+ <section>
+<img class="plain stretch" src="assets/Collision-illustrated.png" />
+ </section>
+ <section>
+<img class="plain stretch" src="assets/complexity-compared.png" />
+ </section>
+ <section>
+<p>what (semi) practical attacks mean for git</p>
+<p><a href="https://lwn.net/Articles/715716/">LWN: Moving Git past SHA-1</a></p>
+<aside class="notes">
+<p>Short version: not the end of the world yet.</p>
+<p>There are scenarios where hash collisions could do scary things.</p>
+<p></p>
+</aside>
+ </section>
+ <section>
+<p>better collaboration</p>
+<aside class="notes">
+<p>Working together still too hard.</p>
+<p>Tied to centralised systems like github still.</p>
+<p>Attempts in Debian around distributed versioned bug tracking.</p>
+</aside>
+ </section>
+ <section>
+<h3>vcses should do so much more</h3>
+ </section>
+ <section>
+<p>handle large and unmergeable files</p>
+<aside class="notes">
+<p>Assets like art, other more compex file formats.</p>
+</aside>
+ </section>
+ <section>
+<p>better collaboration</p>
+<aside class="notes">
+<p>Working together still too hard.</p>
+<p>Tied to centralised systems like github still.</p>
+<p>Attempts in Debian around distributed versioned bug tracking.</p>
+</aside>
+ </section>
+ <section>
+<p>what else?</p>
+<aside class="notes">
+<p>Lots of interesting ideas, maybe audience has some.</p>
+<p>Most experimentation has been using git just as a dumb store.</p>
+</aside>
+ </section>
+ <section>
+<h2>introducing breezy</h2>
+<p><a href="https://breezy-vcs.org/">https://breezy-vcs.org/</a></p>
+ </section>
+ <section>
+<p>fork of bzr</p>
+ </section>
+ <section>
+<p>implemented in python</p>
+ </section>
+ <section>
+<p>native support for git</p>
+<p>using <a href="https://github.com/jelmer/dulwich">dulwich</a></p>
+ </section>
+ <section>
+<p>python 3 port in progress</p>
+ </section>
+ <section>
+<p>flexible plugins framework</p>
+ </section>
+ <section>
+<pre><code class="lang-python hljs">
+"""A Simple bzr plugin to generate statistics about the history."""
+
+from ...commands import plugin_cmds
+
+plugin_cmds.register_lazy("cmd_credits", [],
+ "breezy.plugins.stats.cmds")
+plugin_cmds.register_lazy("cmd_committer_statistics",
+ ['stats', 'committer-stats'], "breezy.plugins.stats.cmds")
+plugin_cmds.register_lazy("cmd_ancestor_growth", [],
+ "breezy.plugins.stats.cmds")
+</code></pre>
+<aside class="notes">
+<p>Been light on Python code so far, so here's what a plugin looks like.</p>
+</aside>
+ </section>
+ <section>
+<pre><code class="lang-python hljs">
+class cmd_ancestor_growth(commands.Command):
+ """Figure out the ancestor graph for LOCATION"""
+
+ takes_args = ['location?']
+
+ def run(self, location='.'):
+ try:
+ wt = workingtree.WorkingTree.open_containing(location)[0]
+ except errors.NoWorkingTree:
+ ...
+</code></pre>
+ </section>
+ <section>
+<p>available in debian testing</p>
+ </section>
+ <section>
+<p>code: <a href="https://launchpad.net/brz">https://launchpad.net/brz</a></p>
+<p>list: <a href="https://lists.ubuntu.com/mailman/listinfo/bazaar">https://lists.ubuntu.com/mailman/listinfo/bazaar</a></p>
+ </section>
+ <section>
+<h3>Thanks! Questions?</h3>
+ </section>
</div>
</div>
@@ -49,7 +258,7 @@
<script>
Reveal.initialize({
- transition: 'zoom',
+ transition: 'fade',
dependencies: [
{ src: 'plugin/markdown/marked.js' },
{ src: 'plugin/markdown/markdown.js' },