[SR-Dev] git repository online

Jan Janak jan at iptel.org
Wed Nov 19 16:34:25 CET 2008


Hello,

Here is some more information on the git repository:


Synchronization with SER CVS
============================
The repository git.sip-router.org/ser is pulls commits from the SER CVS
repository automatically. The synchronization works one-way only, changes
commited to the SER CVS are automatically imported into the Git repository,
but not vice versa. In other words if you want to commit something in the
SER CVS repository then you have to do it manually, git won't help you here.

Clone the repository:
   $ git clone git://git.sip-router.org/ser

and display the list of branches in the cloned repository:
   $ git branch -a

   origin/HEAD
   origin/MAIN
   origin/Maintainer
   origin/andrei_cvs-head
   origin/cancel_fix
   origin/cvs-head
   origin/janakj
   origin/jj/cvshead
   origin/jj/doxygen
   origin/master
   origin/rel_0_8_11
   origin/rel_0_8_12
   origin/rel_0_8_14
   origin/rel_0_9_0
   origin/rel_2_0_0
   origin/rel_janakj
   origin/start
   origin/testing_0_8_12
   origin/vendor

Several of the branches above are automatically updated from CVS, namely
origin/cvs-head receives cvs commits to HEAD and origin/rel_2_0_0
receives commits to the branch rel_2_0_0 in CVS, and so on.

These branches will be updated with latest commits from the CVS repository
every time you do:

   $ git pull

Note that after the steps described above you have the whole CVS commit history
of SER on your local machine, starting with day 1 until today, and including
all branches from the CVS repository. This is convenient because you can
work with the history offline and pretty much all common operations are
blazingly fast because they only work with local files.


Synchronization with Kamailio SVN
=================================
In addition to SER history we also have a git repository which pulls changes
from Kamailio SVN repository automatically. It works just like the automatic
imports of SER from CVS, except that in this case we pull the changes from
the Kamailio SVN repository on sourceforge. To create your local copy of the
repository do:

   $ git clone http://git.sip-router.org/kamailio

This repository is only available through HTTP and read-only. If you display 
the list of branches now you will see all branches and tags from Kamailio SVN 
repository.

   $ git branch -a

   origin/0.9
   origin/1.0
   origin/1.1
   origin/1.2
   origin/1.3
   origin/1.4
   origin/rel_0_9_0
   origin/rel_1_0_0
   origin/rel_1_1_0
   origin/tags/1.0.1
   origin/tags/1.1.1
   origin/tags/1.2.0
   origin/tags/1.2.1
   origin/tags/1.2.2
   origin/tags/1.2.3
   origin/tags/1.3.0
   origin/tags/1.3.1
   origin/tags/1.3.2
   origin/tags/1.4.0
   origin/tags/openser
   origin/tags/tag_rel_1_0_1
   origin/tags/tag_rel_1_1_1
   origin/trunk
   origin/vstag

Note that tags from SVN are represented as branches in git, this is due to
the fact that there is no difference between tags and branches in SVN.

All new SVN commits will be merged in every time you run 

   $ git pull

To investigate the history of the project you can create a local branch that
will track one of the remote branches for example:

   $ git checkout -b kamailio origin/trunk

And then you have the sources of the latest trunk in your working directory 
and you can investigate the history with git log.


Synchronization with OpenSIPS SVN
=================================

We also have a git import of the SVN repository of OpenSIPS, it works in 
exactly the same way as the Kamailio import described above. To make a local
copy you can clone the repository using:

    $ git clone http://git.sip-router.org/opensips

And then you have all SVN branches of opensips in your local copy of the
repository:

    $ git branch -a

    origin/1.4
    origin/tags/1.4.0
    origin/tags/1.4.1
    origin/trunk

Just like the kamailio git import, this repository is only available through
HTTP and is read-only.


All Three Projects In One Repository
====================================
There is the possibility to add all three git imports (ser, kamailio, opensips)
in one local git repository. This could be useful for merging, then you can
just switch between various branches in one repository, go through the history
and merge changes. Here is a short example:

Clone the sip-router repository:

    $ git clone git://git.sip-router.org/sip-router

Now you have a local copy of the sip-router repository which contains parts
shared by ser and kamailio.

After that you can tell git to add the SER import as remote branches to be
tracked by running:

    $ git remote add ser git://git.sip-router.org/ser

And then fetch the history of the SER project:

    $ git fetch ser

Now you can repeat the same for kamailio and opensips:

    $ git remote add kamailio http://git.sip-router.org/kamailio
	$ git remote add opensips http://git.sip-router.org/opensips
	$ git fetch kamailio
	$ git fetch opensips

And if you display all the branches in your local clone of sip-router git
repository, you'll notice that you have all the branches of all the projects
there with full history of all three projects:

    $ git branch -a
 
    kamailio/0.9
    kamailio/1.0
    kamailio/1.1
    kamailio/1.2
    kamailio/1.3
    kamailio/1.4
    kamailio/rel_0_9_0
    kamailio/rel_1_0_0
    kamailio/rel_1_1_0
    kamailio/tags/1.0.1
    kamailio/tags/1.1.1
    kamailio/tags/1.2.0
    kamailio/tags/1.2.1
    kamailio/tags/1.2.2
    kamailio/tags/1.2.3
    kamailio/tags/1.3.0
    kamailio/tags/1.3.1
    kamailio/tags/1.3.2
    kamailio/tags/1.4.0
    kamailio/tags/openser
    kamailio/tags/tag_rel_1_0_1
    kamailio/tags/tag_rel_1_1_1
    kamailio/trunk
    kamailio/vstag
    opensips/1.4
    opensips/tags/1.4.0
    opensips/tags/1.4.1
    opensips/trunk
    ser/HEAD
    ser/MAIN
    ser/Maintainer
    ser/andrei_cvs-head
    ser/cancel_fix
    ser/cvs-head
    ser/janakj
    ser/jj/cvshead
    ser/jj/doxygen
    ser/master
    ser/rel_0_8_11
    ser/rel_0_8_12
    ser/rel_0_8_14
    ser/rel_0_9_0
    ser/rel_2_0_0
    ser/rel_janakj
    ser/start
    ser/testing_0_8_12
    ser/vendor
  * master
    origin/HEAD
    origin/andrei/mod_f_params
    origin/andrei/module_interface
    origin/cancel_fix
    origin/cvs-head
    origin/master
    origin/rel_0_8_11
    origin/rel_0_8_12
    origin/rel_0_8_14
    origin/rel_0_9_0
    origin/rel_2_0_0
    origin/ser_core_cvs
    origin/testing_0_8_12

To fetch latest commits and stay up-to-date run periodically:

    $ git pull
	$ git fetch ser
	$ git fetch kamailio
	$ git fetch opensips


Auto-generated Doxygen Documentation
====================================
There is automatically generated doxygen documentation for every branch and 
tag in the SER git import online. The online documentation gets updated every 
15 minutes and is available at
http://sip-router.org/doxygen.

Documentation for branches is under
http://sip-router.org/doxygen/ser/branch/<branchname>

documentation for tags generated for tags is at:
http://sip-router.org/doxygen/ser/tag/<tagname>

Thus the doxygen documentation for current CVS SER HEAD is at:

http://sip-router.org/doxygen/ser/branch/cvs-head

and documentation for the 2.0.0 release is at

http://sip-router.org/doxygen/ser/tag/v_2_0_0

There is a few shortcuts too:

http://sip-router.org/doxygen/ser-2.1.x
http://sip-router.org/doxygen/ser-2.0.x

For now we only have autogenerated documentation for SER, we will enable it
for sip-router git reposotory (and possibly others) later when there is 
something to generate the documentation from.


More Info
=========
Finally, there is a wiki page with the description of the repository:
http://sip-router.org/wiki/git

I'll try to keep that page up to date and I will also add some
description on how to maintain a modifid ser.cfg on top of changing CVS
tree, a private module, private sets of patches, and so on once I have
some experience with git.

Anyone can edit the wiki page so feel free to add more description if you
like to.


Git Access
==========
I have given write access to the Git repository to all people who have
write access to the SER CVS repository. You can try that by running:

    $ git clone ssh://<your_username>@git.sip-router.org/sip-router

And if this works then you have write access. If it does not work then send
an email with your public SSH key and desired username to this list and we
will give you access.

   enjoy hacking with git, Jan.

On 18-11 02:18, Andrei Pelinescu-Onciul wrote:
> 
> As you probably have noticed the git repository for sip-router is now
> online.
> It was started from ser core and tm.
> 
> git urls:
> 
> git://git.sip-router.org/sip-router
> (read only)
> 
> http://git.sip-router.org/sip-router
> (read only, slower, git://... recomended)
> 
> ssh://git.sip-router.org/sip-router
> (read write but account on git.sip-router.org needed)
> 
> 
> Web interface: http://git.sip-router.org/cgi-bin/gitweb.cgi
> 
> Branches acl: the repository is setup so that you can write/commit
>  only to the following branches:
> 
> <your_username>/.*
> tmp/.*
> master
> 
> We'll add access to more branches as needed (I've added this rules to
>  avoid creating lots of "root" branches by mistake, e.g. git pull
>  from a local branch without a refspec).
> 
> 
> Please create the commit messages following the git convention
> (start with one short line, preferably less then 50 chars summarizing
> the changes, then one empty line and then a more detailed description).
> See:
> http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#creating-good-commit-messages
> http://www.tpope.net/node/106
> 
> 
> Quick git introduction:
> 
> # clone the repo into the sip-router directory
> git clone git://git.sip-router.org/sip-router
> cd sip-router
> git branch -a   # show all branches
> 
> # create a local branch based on origin/andrei/mod_f_params
> git checkout --track -b my_branch origin/andrei/mod_f_params
> 
> git log # see commit log
> git log --pretty=oneline # only the first line from each commit
> 
> vim Makefile.defs
> 
> git add Makefile.defs
> git commit  # or git commmit -a to skip the add step and commit all
>             # changed files
> 
> # push changes back (note you need ssh access for this)
> 
> # note: the next command will fail, unless your username is andrei :-)
> # publish changes on the local "my_branc" to the remote
> # andrei/mod_f_params
> git push origin my_branch:andrei/mod_f_params
> 
> # or push them into the master branch if you are sure about them
> git push origin my_branch:master
> 
> 
> For more info about git try:
> http://git.or.cz/gitwiki/GitDocumentation
> 
> and if you want to know how it works:
> http://eagain.net/articles/git-for-computer-scientists/
> (highly recommended)
> 
> 
> 
> CVS access:
> CVS_SERVER="git cvsserver" cvs \
>             -d :ext:andrei at git.sip-router.org/sip-router co master
> (instead of master you can use any other branch name that doesn't
> include a '/')
> 
> The initial checkout takes a while, but after that cvs update seems fast
> enough.
> 
> 
> SVN access: unfortunately we do not have it. It looks like the 
> git svnserver is in the project stage (there is some python code but not
>  runnable yet). There is a way around it, but it would be quite complex
>  to setup: a git to svn gateway and then svn to git imports.
> 
> 
> Other repositories on git.sip-router.org:
> ser - entire ser updated from cvs
> ser_core - only ser_core, automatically updated from cvs, read-only
> test - test repository, contains an early sip-router version, it has the
>         same access rules as sip-router (if you have something you want
>         to test, please use it rather then trying directly on
>         sip-router).
> 
> 
> Special thanks go to Jan, who not only did setup git.sip-router.org
> (including automatic cvs sync for some of the repos), but he's also 
> hosting it on one of his private machines.
> 
> 
> Andrei
> 
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev



More information about the sr-dev mailing list