diff options
| author | Martin Packman <martin@zegami.com> | 2017-09-28 19:09:34 +0100 |
|---|---|---|
| committer | Martin Packman <martin@zegami.com> | 2017-09-28 19:09:34 +0100 |
| commit | d17559d4b8a55dfd18e4ff16a5e7aa2f45e8fbd1 (patch) | |
| tree | a21b6cdcfe80c934613343129dbfea86b1a9ea86 | |
| parent | 8e28aeaa8fba6f1f76bfda7a460d623146e732b0 (diff) | |
checkpoint
| -rw-r--r-- | css/theme/zegami.css | 19 | ||||
| -rw-r--r-- | index.html | 217 |
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 { @@ -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' }, |
