Difference between revisions of "GIT"

From ArmadeusWiki
Jump to: navigation, search
(GIT to do list)
(Add clean way of submitting patches (buildroot & linux way I think))
Line 21: Line 21:
 
# [http://git-scm.com GIT website]
 
# [http://git-scm.com GIT website]
  
===Developpers===
+
===Basics===
 +
* Update your repository to the latest version on SF:
 +
<pre class="host>
 +
$ git pull
 +
</pre>
 +
 
 +
==How to use GIT (Developers)==
 
*Get the Armadeus GIT/SF repository in the ''armadeus'' directory (will be created):
 
*Get the Armadeus GIT/SF repository in the ''armadeus'' directory (will be created):
 
{{Note| This is the '''Read Only''' method for people wanting to get the latest features. You won't be able to "push" your modifications directly (send us a patch instead).}}<pre class="host">
 
{{Note| This is the '''Read Only''' method for people wanting to get the latest features. You won't be able to "push" your modifications directly (send us a patch instead).}}<pre class="host">
Line 43: Line 49:
 
</pre>
 
</pre>
  
*If git pull fails with an error: "Untracked working tree file '{SOMEFILE}'"
+
*If ''git pull'' fails with an error: "Untracked working tree file '{SOMEFILE}'"
 
<pre class="host">
 
<pre class="host">
 
$ rm -rf {SOMEFILE}
 
$ rm -rf {SOMEFILE}
Line 50: Line 56:
  
 
===Providing modifications===
 
===Providing modifications===
Developpers wanting to propose their development should provide us a patch against the latest GIT revision available.
+
Developers wanting to propose their development should provide us a patch against the latest GIT revision available.
 
The process to follow is:
 
The process to follow is:
* Have a working, let's call it armadeus
+
* Have a working view, let's call it armadeus
* update your views:
+
* update your it:
 
<pre class="host">
 
<pre class="host">
 
$ git pull
 
$ git pull
 
</pre>
 
</pre>
 +
====Quick way====
 
* do your modifications
 
* do your modifications
 
* test them ;-)
 
* test them ;-)
Line 63: Line 70:
 
$ git diff > my_changes.patch
 
$ git diff > my_changes.patch
 
</pre>
 
</pre>
* send it on the armadeus-forum mailing list
+
* send it on the armadeus-forum mailing list with your usual mail client
 
+
====Clean way====
===Armadeus integrators===
+
* create a branch for your work (here ''my_work''):
*Get the GIT/SF repository in Read/Write mode (for integrators only) in the ''armadeus'' directory (will be created):
+
 
<pre class="host">
 
<pre class="host">
$ git clone ssh://USER@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus armadeus
+
$ git branch
 +
* master
 +
$ git branch my_work
 
</pre>
 
</pre>
 +
* make it the working branch:
 +
<pre class="host">
 +
$ git checkout my_work
 +
$ git branch
 +
  master
 +
* my_work
 +
</pre>
 +
* do a commit for each unitary change
 +
<pre class="host">
 +
$ git commit -m "blah blah blah"
 +
</pre>
 +
* when work is finished, ask git to generate signed patches (''0001-toto.patch'', ''0002-toto.patch'', one for each commit....):
 +
<pre class="host">
 +
$ git format-patch -M master..my_work -s
 +
</pre>
 +
* then you can send them to the armadeus-forum mailing list (if james.bond@007.com can send mail to this list):
 +
<pre class="host">
 +
$ git send-email --from=james.bond@007.com --to=armadeus-forum@lists.sourceforge.net 0001-toto.patch 0002-toto.patch
 +
</pre>
 +
* if your work is accepted, you can rebase your branch and then delete it ?:
 +
TBDJB
  
 
==How to use GIT (Armadeus integrators)==
 
==How to use GIT (Armadeus integrators)==
 +
* Get the GIT/SF repository in Read/Write mode (for integrators only) in the ''armadeus'' directory (will be created):
 +
<pre class="host">
 +
$ git clone ssh://USER@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus armadeus
 +
</pre>
 
* Before the first commit, define your global personnal data:
 
* Before the first commit, define your global personnal data:
 
<pre class="host>
 
<pre class="host>
Line 83: Line 116:
 
$ git config --global color.branch auto
 
$ git config --global color.branch auto
 
</pre>
 
</pre>
*Do your changes and commit to your '''local''' repository (here add ''fileorpath''):
+
* Do your changes and commit to your '''local''' repository (here add ''fileorpath''):
 
<pre class="host>
 
<pre class="host>
 
$ git add fileorpath
 
$ git add fileorpath
Line 90: Line 123:
 
$ git commit -a -m 'Explain what I changed'        (if you have local modifications (=not versioned files) and wants GIT to ignore them)
 
$ git commit -a -m 'Explain what I changed'        (if you have local modifications (=not versioned files) and wants GIT to ignore them)
 
</pre>
 
</pre>
 
+
* Update your repository to the latest version on SF:
*Update your repository to the latest version on SF:
+
 
<pre class="host>
 
<pre class="host>
 
$ git pull
 
$ git pull
 
</pre>
 
</pre>
 
+
* Push your changes to SF:
*Push your changes to SF:
+
 
<pre class="host>
 
<pre class="host>
 
$ git push
 
$ git push
 
</pre>
 
</pre>
 
+
* Tag a revision:
*Tag a revision:
+
 
<pre class="host>
 
<pre class="host>
 
$ git tag -m "Creates TAG for Armadeus 3.1 release" release-3.1
 
$ git tag -m "Creates TAG for Armadeus 3.1 release" release-3.1

Revision as of 00:15, 26 January 2010

We have migrated our Source Code Management tool to GIT scm. Therefore the Armadeus software release 3.1 is the last one available under SVN management tool. This page aims to help you to use our new GIT tool.

Install GIT

  • Install the following packages if needed:
git-core gitk git-gui
  • If you want to send us patches through email, you will need to install these additional packages:
git-email

In that case you may need to install/configure sendmail or postfix or exim mail server ([1]).

How to use GIT (for everyone)

Tutorials

  1. GIT-SVN Crash course
  2. Everyday GIT With 20 Commands Or So
  3. GIT website

Basics

  • Update your repository to the latest version on SF:
$ git pull

How to use GIT (Developers)

  • Get the Armadeus GIT/SF repository in the armadeus directory (will be created):
Note Note: This is the Read Only method for people wanting to get the latest features. You won't be able to "push" your modifications directly (send us a patch instead).
$ git clone git://armadeus.git.sourceforge.net/gitroot/armadeus/armadeus armadeus
  • Before beginning to do your modifications don't forget to update your view:
 $ git pull
  • If you have modified some armadeus files and want to revert few files only
$ git checkout path_to_file
  • If you have modified some armadeus files and want to revert all your changes
$ git clean -dfx
$ make apf9328_defconfig or make apf27_defconfig
  • If git pull fails with an error: "Untracked working tree file '{SOMEFILE}'"
$ rm -rf {SOMEFILE}
$ git pull

Providing modifications

Developers wanting to propose their development should provide us a patch against the latest GIT revision available. The process to follow is:

  • Have a working view, let's call it armadeus
  • update your it:
$ git pull

Quick way

  • do your modifications
  • test them ;-)
  • do a patch:
$ git diff > my_changes.patch
  • send it on the armadeus-forum mailing list with your usual mail client

Clean way

  • create a branch for your work (here my_work):
$ git branch
* master
$ git branch my_work
  • make it the working branch:
$ git checkout my_work
$ git branch
  master
* my_work
  • do a commit for each unitary change
$ git commit -m "blah blah blah"
  • when work is finished, ask git to generate signed patches (0001-toto.patch, 0002-toto.patch, one for each commit....):
$ git format-patch -M master..my_work -s
  • then you can send them to the armadeus-forum mailing list (if james.bond@007.com can send mail to this list):
$ git send-email --from=james.bond@007.com --to=armadeus-forum@lists.sourceforge.net 0001-toto.patch 0002-toto.patch
  • if your work is accepted, you can rebase your branch and then delete it ?:
TBDJB

How to use GIT (Armadeus integrators)

  • Get the GIT/SF repository in Read/Write mode (for integrators only) in the armadeus directory (will be created):
$ git clone ssh://USER@armadeus.git.sourceforge.net/gitroot/armadeus/armadeus armadeus
  • Before the first commit, define your global personnal data:
$ git config --global user.name "James Bond"
$ git config --global user.email "james.bond@007.com"
  • If you want colors:
$ git config --global color.diff auto
$ git config --global color.status auto
$ git config --global color.branch auto
  • Do your changes and commit to your local repository (here add fileorpath):
$ git add fileorpath
$ git commit -m 'Explain what I changed'
or 
$ git commit -a -m 'Explain what I changed'        (if you have local modifications (=not versioned files) and wants GIT to ignore them)
  • Update your repository to the latest version on SF:
$ git pull
  • Push your changes to SF:
$ git push
  • Tag a revision:
$ git tag -m "Creates TAG for Armadeus 3.1 release" release-3.1
$ git push --tags origin master

GIT to do list

  • To update to support git:
  1. buildroot/target/device/armadeus/linux/kernel-patches/move-patches.sh