Lénaïc Bagnères, hnc@singularity.fr | bagneres@lri.fr
Ph.D. student, supervised by Cédric Bastoul and Christine Eisenbeis
LRI (Laboratoire de Recherche en Informatique), Équipe Architectures parallèles ParSys
img/32x32/portrait_silhouette.png Main page
img/32x32/kdevelop.png Dev
img/32x32/adjustable_wrench_and_screwdriver.png Tools
img/32x32/erlenmeyer_flask.png Research
img/32x32/graduate_cap.png Teaching
img/32x32/cpp_src.png C++
img/32x32/coin.png Trade
img/32x32/debian.png Debian

img/48x48/adjustable_wrench_and_screwdriver.png Tools

All these tools / software are free (free as in free speech not as in free beer) and free (no-cost).

img/48x48/git.png Git & Gitlab.com

img/32x32/git.png Git

img/16x16/wikipedia.png Wikipedia:
Git is a distributed revision control system with an emphasis on speed, data integrity, and support for distributed, non-linear workflows. Git was initially designed and developed by Linus Torvalds for Linux kernel development in 2005, and has since become the most widely adopted version control system for software development.
img/16x16/wikipedia.png Wikipédia:
Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2.

img/32x32/gitlab.png GitLab

img/16x16/wikipedia.png Wikipedia:
GitLab is a web-based Git repository manager with wiki and issue tracking features. GitLab is similar to GitHub, but GitLab has an open source version, unlike GitHub.
img/16x16/wikipedia.png Wikipédia:
GitLab Community Edition est un logiciel libre, sous licence MIT. Il s'agit d'une forge fonctionnant sur GNU/Linux [...] Il permet :
- de gérer des dépôts Git ainsi que les utilisateurs et leurs droits d'accès aux dépôts
- d'effectuer des examens de code et renforcer la collaboration avec les demandes de fusion
- que chaque projet peut avoir un outil de ticket et un wiki

img/32x32/gitlab.png GitLab.com

Create a img/16x16/gitlab.png GitLab.com account.

Generate a public/private key pair with ssh-keygen:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.
The key fingerprint is:
5a:f5:7a:75:66:af:c7:ab:14:e7:be:b0:fa:bd:1c:8f eo@Korsusa
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|          .      |
|         . .     |
|        S   ....+|
|       o   . .++.|
|      .   . .o +.|
|           .. *o=|
|           .o+EO=|

On img/16x16/gitlab.png GitLab.com, "Profile settings", "SSH Keys", "Add SSH Key":
Copy paste text from ~/.ssh/id_rsa.pub (public key generated by ssh-keygen) file in "Key" textarea (without additional space or end of line).

img/32x32/pencil.png Your Project

On the webpage of your project on img/16x16/gitlab.png GitLab.com, get the the "SSH" url for git clone.

Adapt the following commands: replace your_login and your_project.

In your Git directory (for example, in your home directory):

$ git clone git@gitlab.com:your_login/your_project.git
Cloning into 'your_project'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

Go in Git/your_project directory:

$ cd your_project

Create README.txt file:

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add ..." to include in what will be committed)


nothing added to commit but untracked files present (use "git add" to track)

Add README.txt file:

$ git add README.txt

Write commit message:

$ git commit -m "Add README.txt"
[master (root-commit) c4fb5c4] Add README.txt
1 file changed, 59 insertions(+)
create mode 100644 README.txt

Send modifications on the Git repository:

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 917 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@gitlab.com:your_login/your_project.git
create mode 100644 README.txt
* [new branch] master -> master

img/32x32/git.png Use Git

To update / add a file "a_file":

$ git status # To see modifications
$ git add a_file # To take account of "a_file" file
$ git status # To check added files
$ git commit -m "Commit message" # To comment the modification
$ git push # To send modifications on server

Get changes from repository:

$ git pull

img/32x32/newspaper.png Other pages:
img/32x16/git.png Git & Gitlab.com (Use Git & Gitlab.com)
img/32x16/cmake.png CMake & C++ (Compile a C++ project using CMake)
img/32x16/kdevelop.png IDE & C++ (Compile a C++ project using a IDE (KDevelop, QTcreator, Code::Blocks))
img/32x16/virtualbox.png VirtualBox (Some .vdi VirtualBox images)
img/32x16/openscop.png PeriScop (OpenScop, Clan, PipLib, Candl, CLooG (with ISL), Clay)