Daily Use Guide for using Savannah for lwIP

Table of Contents:

1 - Obtaining lwIP from the Git repository
2 - Committers/developers Git access using SSH
3 - Merging a development branch to master branch
4 - How to release lwIP



1 Obtaining lwIP from the Git repository
----------------------------------------

To perform an anonymous Git clone of the master branch (this is where
bug fixes and incremental enhancements occur), do this:
 git clone git://git.savannah.nongnu.org/lwip.git

Or, obtain a stable branch (updated with bug fixes only) as follows:
 git clone --branch DEVEL-1_4_1 git://git.savannah.nongnu.org/lwip.git

Or, obtain a specific (fixed) release as follows:
 git clone --branch STABLE-1_4_1 git://git.savannah.nongnu.org/lwip.git


2 Committers/developers Git access using SSH
--------------------------------------------

The Savannah server uses SSH (Secure Shell) protocol 2 authentication and encryption.
As such, Git commits to the server occur through a SSH tunnel for project members.
To create a SSH2 key pair in UNIX-like environments, do this:
 ssh-keygen

Under Windows, a recommended SSH client is "PuTTY", freely available with good
documentation and a graphic user interface. Use its key generator.

Now paste the id_rsa.pub contents into your Savannah account public key list. Wait
a while so that Savannah can update its configuration (This can take minutes).

Try to login using SSH:
 ssh -v your_login@git.sv.gnu.org

If it tells you:
 Linux vcs.savannah.gnu.org 2.6.32-5-xen-686 #1 SMP Wed Jun 17 17:10:03 UTC 2015 i686

 Interactive shell login is not possible for security reasons.
 VCS commands are allowed.
 Last login: Tue May 15 23:10:12 2012 from 82.245.102.129
 You tried to execute:
 Sorry, you are not allowed to execute that command.
 Shared connection to git.sv.gnu.org closed.

then you could login; Savannah refuses to give you a shell - which is OK, as we
are allowed to use SSH for Git only. Now, you should be able to do this:
 git clone your_login@git.sv.gnu.org:/srv/git/lwip.git

After which you can edit your local files with bug fixes or new features and
commit them. Make sure you know what you are doing when using Git to make
changes on the repository. If in doubt, ask on the lwip-members mailing list.

(If SSH asks about authenticity of the host, you can check the key
fingerprint against https://savannah.nongnu.org/git/?group=lwip


3 - Merging a development branch to master branch
-------------------------------------------------

Merging is a straightforward process in Git. How to merge all changes in a
development branch since our last merge from main:

Checkout the master branch:
 git checkout master

Merge the development branch to master:
 git merge your-development-branch

Resolve any conflict.

Commit the merge result.
 git commit -a

Push your commits:
 git push


4 How to release lwIP
---------------------

First, tag the release using Git: (I use release number 1.4.1 throughout
this example).
 git tag -a STABLE-1_4_1

Share the tag reference by pushing it to remote:
 git push origin STABLE-1_4_1

Prepare the release:
 cp -r lwip lwip-1.4.1
 rm -rf lwip-1.4.1/.git lwip-1.4.1/.gitattributes

Archive the current directory using tar, gzip'd, bzip2'd and zip'd.
 tar czvf lwip-1.4.1.tar.gz lwip-1.4.1
 tar cjvf lwip-1.4.1.tar.bz2 lwip-1.4.1
 zip -r lwip-1.4.1.zip lwip-1.4.1

Alternatively, archive the current directory using git
 git archive -o lwip-1.4.1.tar.gz --prefix lwip-1.4.1/ STABLE-1_4_1

Now, sign the archives with a detached GPG binary signature as follows:
 gpg -b lwip-1.4.1.tar.gz
 gpg -b lwip-1.4.1.tar.bz2
 gpg -b lwip-1.4.1.zip

Upload these files using scp:
 scp lwip-1.4.1.* <username>@dl.sv.nongnu.org:/releases/lwip/

Additionally, you may post a news item on Savannah, like this:

A new 1.4.1 release is now available here:
http://savannah.nongnu.org/files/?group=lwip&highlight=1.4.1

You will have to submit this via the user News interface, then approve
this via the Administrator News interface.
