User Tools

Site Tools


it:git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
it:git [2011/12/25 18:02]
Alexander Rind created
it:git [2015/11/25 10:14] (current)
Alexander Rind [Further Readings] Git lernen mit Beispielen
Line 1: Line 1:
-====== ​git Version Control System ======+====== ​Git Version Control System ======
  
 +Git (http://​git-scm.com/​) is a //​distributed version control system//​. ​
 +It keeps a complete repository next to each working copy, thus one can commit or inspect the project history locally.
 +
 +**Warning:​** Unlike most other version control systems (e.g., Subversion) a commit is not understood as a difference between two revisions but as the content of its revision. ​
 +In fact, Git stores the commit under the SHA-1 hash of all files in the project -- also files that were not changed in this commit. ​
 +Thus, the same change of one sub-module committed to two Git branches that differ only in another sub-module results in two different SHA-1 hashes and two different commits.
 +It is possible to work around this by ''​cherry-pick''​ing but that will lead to extra headache. ​
 +Better practice is to have only one feature per branch. ​  
 +
 +===== Setup with Eclipse and GitHub =====
 +
 +  - GitHub account
 +    * create an account at [[https://​github.com/​ | GitHub]]
 +    * watch [[https://​github.com/​ieg-vienna/​Prefuse | our project]]
 +  - SSH public key pair
 +    * for connecting to GitHub you need a SSH public keypair
 +    * you probably already have a keypair (e.g., for your [[subversion]] setup).
 +    * in Eclipse you can create or manage SSH keypairs ​
 +      * Window -> Preferences -> General -> Network Connections -> SSH2
 +      * on Windows I have my SSH home in ''​C:​\Users\Rind\AppData\Roaming\ssh''​ and NTFS-encrypted this directory
 +      * see also [[http://​wiki.eclipse.org/​EGit/​User_Guide#​Eclipse_SSH_Configuration]]
 +    * copy/paste the public key to your GitHub profile at https://​github.com/​account/​ssh
 +  - EGit 
 +    * install "EGit - Git Team Provider" ​
 +      * either from the [[Eclipse#​eclipse_marketplace | Eclipse Marketplace]] ​
 +      * or from their update site: ''​%%http://​download.eclipse.org/​egit/​updates/​%%''​
 +  - clone the repository to your computer and add it to Eclipse
 +    - in Eclipse select File -> Import ​
 +    - then Git -> Projects from Git
 +    - Select Repository Source: "​URI"​
 +    - Source Git Repository
 +      * URI: ''​git@github.com:​ieg-vienna/​Prefuse.git''​
 +      * you don't need to change anything else!
 +      * leave user "​git"​ and password ""​!
 +    - Branch Selection: leave all branches selected
 +    - select a directory where Git should store local repositories (only at first use)
 +      * this should be outside your Eclipse workspace directory!
 +      * I use ''​C:​\Users\Rind\git''​
 +    - Local Destination:​ accept default values ​
 +    - Setup Eclipse project
 +      * If there are Eclipse project files in the repository; i.e. "​Finish"​ is not grayed out. \\ Example: prefuse-vienna
 +        - Import existing project
 +      * Otherwise. \\ Examples: EvalBench, TimeBench, ieg-util, ieg-prefuse
 +        - Import as general project
 +        - close project in Eclipse
 +        - manually copy eclipse.project to .project and eclipse.classpath to .classpath \\ If this does not work in Windows Explorer, the Windows Commandline or a [[http://​notepad-plus-plus.org/​ | good text editor]] can be used.
 +        - reopen project in Eclipse
 +      * The 3rd option (new project wizard) fails.
 +
 +__Note__: for contribution development EGit will be sufficient -- you do **NOT** need //Git for Windows//
 +
 +__Note__: I wrote this guide for Eclipse IDE for Java Developers Helios SR2, but it should also work for other versions.
 +
 +===== Work git on the client and Subversion on the server =====
 +
 +Initial Checkout:
 +<code bash>
 +git svn clone svn+ssh://​svn.isis.tuwien.ac.at/​home/​HypoVis/​repository/​Theses/​TimeBench
 +</​code>​
 +
 +Work with ''​git''​ as you like, include branches and rebasing.
 +
 +Commit to server:
 +<code bash>
 +git svn dcommit
 +</​code>​
 +
 +Update from server:
 +<code bash>
 +git svn rebase
 +</​code>​
 +
 +Might be relevant: [[http://​stackoverflow.com/​a/​10762396/​1140589 | git-svn to handle eol-style]]
 +
 +Alternative:​ http://​subgit.com/​
 +
 +===== Attach a new pull request to an existing issue on GitHub =====
 +
 +<code bash>
 +curl --user "​alex-rind:​XXXXX"​ \
 +       ​--request POST \
 +       ​--data '​{"​issue":​ "​16",​ "​head":​ "​alex-rind:​character-encoding",​ "​base":​ "​master"​}'​ \
 +       ​https://​api.github.com/​repos/​prefuse/​Prefuse/​pulls
 +</​code>​
 +
 +XXXXX -> GitHub web password \\
 +character-encoding -> branch name
 +
 +Source: http://​stackoverflow.com/​questions/​4528869/​how-do-you-attach-a-new-pull-request-to-an-existing-issue-on-github#​answer-4529172
 +
 +===== Rename files throughout history =====
 +
 +<code bash>
 +git filter-branch --index-filter '
 +git ls-files -s | \
 +sed "​s-\t.classpath-\teclipse.classpath-"​ | \
 +sed "​s-\t.project-\teclipse.project-"​ | \
 +GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info && \
 +mv "​$GIT_INDEX_FILE.new"​ "​$GIT_INDEX_FILE"​
 +' HEAD
 +</​code>​
 +
 +Source: http://​www.fussylogic.co.uk/​blog/?​p=1250
 ===== Further Readings ===== ===== Further Readings =====
  
 +  * [[http://​www.x3m.ch/​files/​Git%20lernen%20mit%20Beispielen.pdf | Git lernen mit Beispielen]] -- short tutorial in German; Markus W. recommends :-)
 +  * [[http://​progit.org/​book/​ | Pro Git e-book]] -- i can recommend :-)
 +  * [[http://​book.git-scm.com/​ | git community book]] -- i didn't read
 +  * [[http://​git-scm.com/​course/​svn.html | git crash course for Subversion users]]
 +  * [[http://​wiki.eclipse.org/​EGit/​User_Guide | User Guide for Eclipse plugin]]
 +  * [[http://​help.github.com/​ | GitHub Help]] ​
  
it/git.1324832568.txt · Last modified: 2011/12/25 18:02 by Alexander Rind

alex @ ieg: home about me publications research