diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8c7eaa3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules +/img/not_used \ No newline at end of file diff --git a/Mariano_12_11_2019_Version_Control_with_git.pdf b/Mariano_12_11_2019_Version_Control_with_git.pdf new file mode 100644 index 0000000..acf2e34 Binary files /dev/null and b/Mariano_12_11_2019_Version_Control_with_git.pdf differ diff --git a/asciidoctor-revealjs.js b/asciidoctor-revealjs.js new file mode 100644 index 0000000..7698364 --- /dev/null +++ b/asciidoctor-revealjs.js @@ -0,0 +1,8 @@ +// Load asciidoctor.js and asciidoctor-reveal.js +var asciidoctor = require('asciidoctor.js')(); +var asciidoctorRevealjs = require('asciidoctor-reveal.js'); +asciidoctorRevealjs.register() + +// Convert the document 'presentation.adoc' using the reveal.js converter +var options = {safe: 'safe', backend: 'revealjs'}; +asciidoctor.convertFile('presentation.adoc', options); \ No newline at end of file diff --git a/custom_css.css b/custom_css.css new file mode 100644 index 0000000..bd942ec --- /dev/null +++ b/custom_css.css @@ -0,0 +1,28 @@ +.reveal h1 { + color: #133481 !important; +} + +.reveal h2 { + + /* position: absolute !important; */ + position: fixed !important; + top: 0 !important; + left: 0 !important; + + /* margin-left: auto !important; + margin-right: auto !important; */ + + /* right: 0 !important; + align-items: left !important; + text-align: left !important; */ + color: #133481 !important; + } + + + .reveal ul { + color: #ff7c00 !important; + } + + .reveal ol { + color: #ff7c00 !important; + } \ No newline at end of file diff --git a/img/architecture.png b/img/architecture.png new file mode 100644 index 0000000..56fe028 Binary files /dev/null and b/img/architecture.png differ diff --git a/img/git_workflow.jpg b/img/git_workflow.jpg new file mode 100644 index 0000000..382b512 Binary files /dev/null and b/img/git_workflow.jpg differ diff --git a/img/intro.jpg b/img/intro.jpg new file mode 100644 index 0000000..caa84bd Binary files /dev/null and b/img/intro.jpg differ diff --git a/img/lyxlilipond.png b/img/lyxlilipond.png new file mode 100644 index 0000000..d231f9b Binary files /dev/null and b/img/lyxlilipond.png differ diff --git a/img/nocloud.jpg b/img/nocloud.jpg new file mode 100644 index 0000000..87a9298 Binary files /dev/null and b/img/nocloud.jpg differ diff --git a/img/normal.jpg b/img/normal.jpg new file mode 100644 index 0000000..d4e9597 Binary files /dev/null and b/img/normal.jpg differ diff --git a/img/nvbqz.png b/img/nvbqz.png new file mode 100644 index 0000000..9f55d15 Binary files /dev/null and b/img/nvbqz.png differ diff --git a/img/quicktourexample_small.png b/img/quicktourexample_small.png new file mode 100644 index 0000000..f0aaca1 Binary files /dev/null and b/img/quicktourexample_small.png differ diff --git a/img/version-control-flow.png b/img/version-control-flow.png new file mode 100644 index 0000000..59c95a1 Binary files /dev/null and b/img/version-control-flow.png differ diff --git a/img/xkcd_git.png b/img/xkcd_git.png new file mode 100644 index 0000000..4f5ab56 Binary files /dev/null and b/img/xkcd_git.png differ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..74ad19d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,115 @@ +{ + "name": "presentacion_nov_2019", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "asciidoctor-reveal.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/asciidoctor-reveal.js/-/asciidoctor-reveal.js-2.0.0.tgz", + "integrity": "sha512-REnlW62qj6NPheOl8EwLwJZWpArUWOfAhDZv+lf9wX2MXUC/n9LN081buerQtByYAMG2ZiuY9ealPZqKTCIsvQ==", + "requires": { + "asciidoctor.js": "1.5.9", + "reveal.js": "3.7.0" + } + }, + "asciidoctor.js": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz", + "integrity": "sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA==", + "requires": { + "opal-runtime": "1.0.11" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "opal-runtime": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.11.tgz", + "integrity": "sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA==", + "requires": { + "glob": "6.0.4", + "xmlhttprequest": "1.8.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "reveal.js": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/reveal.js/-/reveal.js-3.7.0.tgz", + "integrity": "sha512-HTOTNhF5mQAw6fcsptk4oql/DEEUwTG0YHk/LzTNNx0/3IgvOQZqKzvlK/zNpqqKMLlhn1gH9Nvp+FFoc/e5/w==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "xmlhttprequest": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", + "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e1b4a99 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "presentacion_nov_2019", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "asciidoctor-reveal.js": "^2.0.0" + } +} diff --git a/presentation.adoc b/presentation.adoc new file mode 100644 index 0000000..c34bafc --- /dev/null +++ b/presentation.adoc @@ -0,0 +1,376 @@ += Document Version Control with GIT +:customcss: custom_css.css +:imagesdir: img +:title-slide-background-image: intro.jpg +:background-image: normal.jpg +:revealjs_theme: white +:revealjs_margin: 0.1 +:revealjs_width: 1920 +:revealjs_height: 1200 + +== Before we start... + +image::nocloud.jpg[scaledwith=60%] + +== What is version control? + +[%step] +* Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. +* Has existed for almost as long as writing has existed (ex. document version) +* Today, the most capable (as well as complex) revision control systems are those used in software development. + +=== Why? + +[%step] +* Revert files back to a previous state +* "Freeze" important versions of a document +* Compare changes over time +* Track progress of a project +* See who modified something, and when + +=== Modern version control systems + +[%step] +* Remote backup of files +* Powerful tool for collaboration + +== GIT + +[%step] +* Developed by Linus Torvalds in 2005 +* The linux Kernel: +** ~63000 files +** Roughly 15,600 developers from more than 1,400 companies + +=== Characteristics + +[%step] +* Free and open source +* Distributed +* Powerful and flexible +* Learning curve can be steep + +=== ! + +image:xkcd_git.png[] + +=== How does it work? + +image::architecture.png[] + +=== Installation + +https://git-scm.com/download/win + +Package managers are heavily recommended! + + +=== Creating a remote repository + +[%step] +* register at the remote git server +** https://git.webhosting.rug.nl/ +* create repository +* add participants __ssh public keys__ +* clone the repository in your machine + +=== README and .gitignore + +Every repository should have these 2 files: + +* **README**: project description and useful information +* **.gitignore**: special file indicating GIT which files are **not** to be tracked + +=== workflow + +image::git_workflow.jpg[] + +=== copying remote repository: clone + +* **git clone __repository__** +* Clones the remote repository into the local one + +=== staging changes (local) + + +[%step] +* **git add __files__** +* Adds the changes into the local staging area + +=== Saving changes: commit (local) + +[%step] +* **git commit "message"** +* Saves the changes in the staging area into the repository +* Creates a "snapshot" of the current state of one or more files +* A message describing the changes must be provided + +=== history and revert (local) + +[%step] +* **git log __files__** +* returns a history of the file modifications +* **git revert __commit__** +* removes one or more commits from the local files, changes must be committed after + +=== upload to remote repository: push + +[%step] +* **git push** +* Uploads the state of the local repository to the remote one + +=== Download from remote repository: pull + +[%step] +* **git pull** +* Fetch and merges the documents in the remote repository into the local one +* Merging files can generate conflicts, git will ask us to fix them and commit the changes + +=== Branching + +image::version-control-flow.png[] + +=== other (advanced) stuff + +* tags +* partial reverts +* change history +* ... + +== Docs as code + +[%step] +* Software is a small part of the documents a project must handle +* Still, version control and remote collaboration are needed for all the documents +* In the last years there is a big push of treating documents the same way as programming files +** https://www.writethedocs.org/guide/docs-as-code/ + +=== Advantages + +[%step] +* Working in plain text files (rather than binary file formats like Word) +* Collaborating using version control such as git and GitHub +* Storing docs in the same repositories as the programming code itself +* Versioning docs through git tags/releases (rather than duplicating all the files to archive each release) +* Generate other formats or websites without modifying the document + +=== Just a little problem... + +[%step] +* The most common document formats: word, pdf... are binary files +* git (text based) doesn't work with them + +=== Solutions? + +[%step] +* Markup languages: +* Markup languages are ways of annotating an electronic document. +* Usually markup will either specify how something should be displayed or what something means. +** html, xml, latex... + +=== Markup languages + +[%step] +* Documents are written in plain text, then a program convert them into the final document +* The same document can be used to generate files in other formats: latex, word, pdf or even slides +* Formating is done by the computer, output is always consistent +* Fast and light +* Can be used in version control systems + +=== Markup languages: Advanced features + +[%step] +* Automatic generation of documents +* Inline comments (not rendered in the final document) +* Split one the document into several. Ex: main document, chapters and bibliography +* Code executed and plots rendered __in__ the document + + +=== Latex + +[%step] +* Extensively used for technical papers +* Beautiful generated documents +* Very powerful... +* ...and very heavy +* Setup and document customization are complex + +=== Latex: example + +---- + + +\documentclass{article} +\usepackage{graphicx} + +\begin{document} + +\title{Introduction to \LaTeX{}} +\author{Author's Name} + +\maketitle + +\begin{abstract} +The abstract text goes here. +\end{abstract} + +\section{Introduction} +Here is the text of your introduction. + +\begin{equation} + \label{simple_equation} + \alpha = \sqrt{ \beta } +\end{equation} + +\subsection{Subsection Heading Here} +Write your subsection text here. + +\begin{figure} + \centering + \includegraphics[width=3.0in]{myfigure} + \caption{Simulation Results} + \label{simulationfigure} +\end{figure} + +\section{Conclusion} +Write your conclusion here. + +\end{document} + +---- + + +=== Latex: example II + +---- +\documentclass[12pt]{article} +\usepackage{lingmacros} +\usepackage{tree-dvips} +\begin{document} + +\section*{Notes for My Paper} + +Don't forget to include examples of topicalization. +They look like this: + +{\small +\enumsentence{Topicalization from sentential subject:\\ +\shortex{7}{a John$_i$ [a & kltukl & [el & + {\bf l-}oltoir & er & ngii$_i$ & a Mary]]} +{ & {\bf R-}clear & {\sc comp} & + {\bf IR}.{\sc 3s}-love & P & him & } +{John, (it's) clear that Mary loves (him).}} +} + +\subsection*{How to handle topicalization} + +I'll just assume a tree structure like (\ex{1}). + +{\small +\enumsentence{Structure of A$'$ Projections:\\ [2ex] +\begin{tabular}[t]{cccc} + & \node{i}{CP}\\ [2ex] + \node{ii}{Spec} & &\node{iii}{C$'$}\\ [2ex] + &\node{iv}{C} & & \node{v}{SAgrP} +\end{tabular} +\nodeconnect{i}{ii} +\nodeconnect{i}{iii} +\nodeconnect{iii}{iv} +\nodeconnect{iii}{v} +} +} + +\subsection*{Mood} + +Mood changes when there is a topic, as well as when +there is WH-movement. \emph{Irrealis} is the mood when +there is a non-subject topic or WH-phrase in Comp. +\emph{Realis} is the mood when there is a subject topic +or WH-phrase. + +\end{document} + +---- + +=== Latex alternative: Lyx + +[%step] +* WYSIWYG latex editor +* Documents are generated in .lyx, a subset of latex +* Can be used together with version control +* Provides, by default, templates for many of the biggest scientific journals + +=== Lyx: example + +image::nvbqz.png[] + +=== Lyx: example II + +image::lyxlilipond.png[] + + +=== Lightweight Markup languages + +[%step] +* Also called Plain Text Markup or humane markup language +* Provide a way of formating the document, while still being readable +* Widely used on websites and code documentation + +=== LML: current options + +* Markdown +* reStructuredText (rst) +* Asciidoc + +=== Markdown + +[%step] +* Created for minimal formating of web text +* used **__everywhere__**: web, jupyter notebooks, r-markdown... +* There is no standard, currently exist many flavours of it (github, commonmark, pandoc) +* Originally not intended for documents, very limited +* Different flavors and tools try to overcome this limitation +** (+ pandoc) + +=== Markdown: example + +image::quicktourexample_small.png[] + +=== Asciidoc + +[%step] +* Developed for book creation. +* Limited number of users +* Standardized and extensible, great documentation +* Lack of resources makes that bugs or request take time to be fixed + +=== reStructuredText + +[%step] +* Originally intended for python documentation +* medium sized but very tech-savvy community +* Syntax is a little different than the other two +* Very powerful and extensible + + +=== Which one to use? + +* Notetaking: +** Markdown +** Asciidoc +** reStructuredText +* Anything more serious: +** reStructuredText +** Latex/Lyx + +== Resources + +https://chocolatey.org + +---- +choco install git vscode pandoc +---- + + +== Questions? + diff --git a/presentation.html b/presentation.html new file mode 100644 index 0000000..a2ba622 --- /dev/null +++ b/presentation.html @@ -0,0 +1,234 @@ +