previously programmation web avancée git · git (/ɡɪt/) is a distributed revision control and...

7
Programmation Web Avan GIT Design of Web Applications 5 : Ov Previously... Introduction to Version Control and Git Git basics Schyzophrenic Git Collaborating using Git and GitLab (or github) Summing it up Design of Web Applications 5 : Ov Previously... Introduction to Version Control and Git Git basics Schyzophrenic Git Collaborating using Git and GitLab (or github) Summing it up Spring pour le coté serveu Nous avons utilisé maven, Spring, Spring boot (structure et compilatio l'architecture MVC Spring Web ( @Controller , ..., controlleur) Thymeleaf (vues) JPA ( @Entity , ..., modèle) Spring Data ( CrudRepository , ..., modèle) Nous verrons (coté serveur) la création d'API Rest la gestion des profils utilisateurs un peu de sécurité Les Projets But faire une application web avec génération de page en coté serveur avec serveur REST + client ReactJS Organisation équipes de 3 personnes composition des équipes pour lundi (10 oct.) soutenances le 2 décembre Conseils choisir/proposer son sujet commencer tout de suite (partie que serveur) utiliser git Détails sur le site, projets Design of Web Applications 5 : Ov Previously... Introduction to Version Control and Git Git basics Schyzophrenic Git Collaborating using Git and GitLab (or github) Summing it up

Upload: others

Post on 20-May-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

Programmation Web AvancéeGIT

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Spring pour le coté serveurNous avons utilisé

maven, Spring, Spring boot (structure et compilation)l'architecture MVCSpring Web ( @Controller , ..., controlleur)Thymeleaf (vues)JPA ( @Entity , ..., modèle)Spring Data ( CrudRepository , ..., modèle)

Nous verrons (coté serveur)la création d'API Restla gestion des profils utilisateursun peu de sécurité

Les ProjetsBut

faire une application webavec génération de page en coté serveuravec serveur REST + client ReactJS

Organisationéquipes de 3 personnescomposition des équipes pour lundi (10 oct.)soutenances le 2 décembre

Conseilschoisir/proposer son sujetcommencer tout de suite (partie que serveur)utiliser git

Détails sur le site, projets

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Page 2: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

About YouWho already knows Git?

Who knows any of these?CVS, Subversion,Mercurial, Baz, GnuArch

About This PresentationObjectives

get convinced by version control systemslearn practical Git skillslearn about GitLab for collaborationhands on with some “code” (latex document)

Don't Hesitateto ask questionsto interrupt meto ping me after, when trying to practice

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Version Control: What?A version control system (VCS)

records what you and your collaborators have doneallows easy replication across machinesallows you to easily see changesallows you to easily experiment new things

Why dropbox/google drive/... is not sufficientsafety of your dataownership of your datasemantics of your changes

Why CVS/Subversion might not be sufficientcentralized : a host of the repositoryworking in the train/plane/countrysidespeed limit

Git

Git (/ɡɪt/) is a distributed revision control and source code management(SCM) system with an emphasis on speed, data integrity, and support fordistributed, non-linear workflows. Git was initially designed anddeveloped by Linus Torvalds for Linux kernel development in 2005, andhas since become the most widely adopted version control system forsoftware development.

History of Gitopen sourceinitiated by Linus Torvaldsfirst release: 7 April 2005version 2.1.2: 30 September 2014fast and efficient

Page 3: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Starting with GitInitializing your projectgit init

What's up?git status

Deciding what is relevantgit add file1 file2 …git commit

first: introduce yourself

Let's try itcp -r base mypaper ; cd mypaper

git init

git statusgit add mypaper.tex cvpr.stygit statusgit commitgit status

... and more…

RecapBeginninggit initgit add ...git commit [-m ...]

Workinggit statusgit add ...git commit [-m ...]

Recap 2Keep your project clean: ignoring files

.gitignore file(s)blabla.* , !blabla.my_precious, * ~**

What did I just modify?git statusgit diff [...]

What happened?git log

Nota Bene (vs CVS, Subversion)You have the complete repository

have all commits locallycommit often, fast and everywhere (train, plane, here)merge with 0-stresswarning: commit ≠ backup

Need to “git add” modifications

Repository == projectSVN has a big tree-shaped repositorySVN allows to "checkout" any subtreeGit works at the repository levelyou'll have a set of repositorycommits are at the repository level

Page 4: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

GUI for GitBundled with git: git gui

Many others (gitg, qgit, GitX, tortoisegit, Netbeans, ...)

graphical user interfaces for Git

huge list of frontends and tools

Customizing GitIntroducing yourselfgit config --global user.name "John Doe"git config --global user.email [email protected]

Fancy colors and shortcutsgit config --global color.ui true

git config --global alias.st statusgit config --global alias.ci commit

Configuration in ~/.gitconfig

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

About HistoryRemember git log?

Each commit is written in stoneparent(s) commitmodificationssha1sum (e.g.    cb6dc3cb1f4f5eb15c1d9b2b25ae741cd73c0554)

can be diff'ed againstgit diff cb6dc3...

can be retreivedgit checkout cb6dc3...

Back to the Future: parallel universesgit loggitk # or gitg

git checkout 41474a33e098689b...

emacs paper.texgit commitgitkgitk --all

... and more…

RecapBranch

a label for a commitautomatically follows on new commit (git commit)

Always commit before mergingcommit is cheap, easy and localyou never loose anything when merging

Use of “sha1” or branch-name (e.g. brrrr)

Shortcutscb6dc3, brrrr, HEAD,HEAD^, HEAD~, HEAD~~, HEAD~2, HEAD~42,HEAD^2, cb6dc3^42, tagggg

Page 5: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

Recap 2Moving in the history

git checkout sha1-or-branch-name

Creating a new branch at current positiongit checkout -b new-branch-name

Merging “brrrr” into “master”git checkout mastergit merge brrrr

Recap 3Automatic git merge ⇒ automatic commit

On conflicting git merge(partial merge)solve conflictgit addgit commit

Exploring historygit loggitk [--all]log --graph --decorate --oneline --all --color

Best Practicescommit early and often

always commit before merge (or pull)

use meaningful commit messages

avoid committingbinary files that change often (NB: word/excel/... are binary)generated files (that can be regenerated in a reasonable time)temporary files

keep your git status clean

don't put git repositories inside git repositories

more

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

What is GitLab (and GitHub)GitLab

a company providing support and advanced featuresan open source project (Community Edition)a web applicationcollaboration platformhosting git repositoriesvisualizing repositoriesmanaging issues/tickets

GitLab offers git repository management, code reviews, issue tracking,activity feeds, wikis.

Let's GoCreate a repository on GitLab

Push our contentlink our repository to the remote repository (on GitLab)push the changes to this remote repository

On another machineclone the repositorymake changes, commit and push them

On this machinepull changes: fetch them and then merge

Page 6: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

Recap GitLab (and Git remotes)GitLab project == git repository (+ more)

More GitLab (additions to git)Groups

groups of users (e.g., PhD student and supervisors)automatic access to the projects of the group

Forkingtake a repository on GitLabmake a “personal” copy of this repository (still on GitLab)

Merge requests (pull requests in GitHub)ask for another repo to integrate changes from your fork

Issuesbugquestionsfeature requests

Wikis

Design of Web Applications 5 : OverviewPreviously...

Introduction to Version Control and Git

Git basics

Schyzophrenic Git

Collaborating using Git and GitLab (or github)

Summing it up

Key PointsVersion control

keep track of what happenedstore semantic snapshots/versions of your “code”

Git“distributed” version control: you have a complete repositoryefficient and widely usedone repository per project

GitLab : a place to share repositories (projects)visualization of the repositories, wiki pages, issue tracker, groups of users (e.g., PhD student and supervisors)

Linksinteractive learning of branching in Git

Correspondence git <-> svngit commit <-> none

git commit ; git push <-> svn commit

git fetch <-> none

git fetch ; git merge <-> svn update

git pull == git fetch ; git merge

NB: you can use git to collaborate with SVN users

Going furthergit remote add

git tag

git rebase

git commit --amend

git reflog

git ls-files

git revert

git bisect

Page 7: Previously Programmation Web Avancée GIT · Git (/ɡɪt/) is a distributed revision control and source code management (SCM) system with an emphasis on speed, data integrity, and

Points Clés