Git For Garage

(Minor changes)
(spelling/grammar changes)
Line 1: Line 1:
== Overview ==
== Overview ==
-
The purpose of this page is to describe details of the "Git for [http://garage.maemo.org garage]" projects that is being kicked off at the beginning of December, 2008.
+
The purpose of this page is to describe details of the "Git for [http://garage.maemo.org garage]" project that is being kicked off at the beginning of December 2008.
== Background ==  
== Background ==  
-
Garage has been a successful hosting environment for Maemo projects since [http://test.maemo.org/#date_25052006 2006]. The tool that powers garage is [http://gforge.org/ GForge] with [https://garage.maemo.org/projects/garage some modifications] done by the Maemo team. Software projects coming to garage can only use one source code revision control system, that is [http://subversion.tigris.org/ subversion, aka svn].  
+
Garage has been a successful hosting environment for Maemo projects since [http://test.maemo.org/#date_25052006 2006]. The tool that powers garage is [http://gforge.org/ GForge] with [https://garage.maemo.org/projects/garage some modifications] done by the Maemo team. Software projects coming to garage can only use one source code revision control system, that is [http://subversion.tigris.org/ subversion, aka SVN].  
-
Ever since the [http://kernel.org Linux kernel] has been maintained by [http://git.or.cz/ git] we had been asked to offer git for garage projects as well. The time has finally came and we are now developing the changes.  
+
Ever since the [http://kernel.org Linux kernel] has been maintained by [http://git.or.cz/ Git] we have been asked to offer Git for garage projects as well. The time has finally come and we are now developing the changes.  
-
The [http://gforge.com GForge team] has developed a [http://gforge.com/gf/project/scmgit/ git plugin] which provides the functionality we are trying to achieve, but their plugin is meant for the [http://gforgegroup.com/es/ Advanced Server edition] of GForge. GForge AS is not in line (both code- and license wise) with the [http://gforge.org/projects/gforge/ open source version] we have at garage. Therefore we decided to write a free plugin for garage, which could be used by on any GForge 4.5.20+ installations.
+
The [http://gforge.com GForge team] has developed a [http://gforge.com/gf/project/scmgit/ Git plugin] which provides the functionality we are trying to achieve, but their plugin is meant for the [http://gforgegroup.com/es/ Advanced Server edition] of GForge. GForge AS is not in line (both code- and license wise) with the [http://gforge.org/projects/gforge/ open source version] we have at garage. Therefore we decided to write a free plugin for garage, which could be used by on any GForge 4.5.20+ installations.
== Plans ==
== Plans ==
-
The full git offering for Maemo projects will come in 3 phases.  
+
The full Git offering for Maemo projects will come in 3 phases.  
-
* In the first phase we will offer git for the new garage projects. These projects may choose git as their VCS. They will get a repository on a Maemo server (the name will be probably git.maemo.org) which they can start using immediately. Project members will automatically get commit access, while non-members will be able to pull code using [standard git tools]. [http://git.or.cz/course/svn.html This great page] helps subversion users to get started with git commends.
+
* In the first phase we will offer Git for the new garage projects. These projects may choose Git as their VCS. They will get a repository on a Maemo server (the name will be probably git.maemo.org) which they can start using immediately. Project members will automatically get commit access, while non-members will be able to pull code using [standard Git tools]. [http://git.or.cz/course/svn.html This great page] helps subversion users to get started with Git commands.
-
* In the second phase we create a web interface for browsing git trees, viewing commits and diffs. The features will be similar to those available for [https://garage.maemo.org/plugins/scmsvn/viewcvs.php/?root=garage subversion repositories today].  
+
* In the second phase we will create a web interface for browsing Git trees, viewing commits and diffs. The features will be similar to those available for [https://garage.maemo.org/plugins/scmsvn/viewcvs.php/?root=garage subversion repositories today].  
We will reuse features and probably source codes from existing, open source projects, such as [http://git.or.cz/gitwiki/Gitweb gitweb] or [http://people.proekspert.ee/peeter/git/git.php?p=git-php.git git-php]. The new interface will be seamlessly integrated with the rest of GForge.
We will reuse features and probably source codes from existing, open source projects, such as [http://git.or.cz/gitwiki/Gitweb gitweb] or [http://people.proekspert.ee/peeter/git/git.php?p=git-php.git git-php]. The new interface will be seamlessly integrated with the rest of GForge.
-
* In the last phase we try to provide mechanisms for svn to git migration. This will help existing projects to convert their repository into git. Details of this phase still to be worked out.
+
* In the last phase we will try to provide a mechanism for SVN to Git migration. This will help existing projects to convert their repository into Git. Details of this phase is still to be worked out.
All the software and documentation will be hosted as [http://garage.maemo.org/projects/ggit ggit on garage].
All the software and documentation will be hosted as [http://garage.maemo.org/projects/ggit ggit on garage].
Line 27: Line 27:
== Phase 1 ==
== Phase 1 ==
-
This phase requires a server that is to be used for hosting the git repositories. Each project on garage will have its own, dedicated git repository. A repository can have two different modes of operation:  
+
This phase requires a server that for hosting the git repositories. Each project on garage will have its own, dedicated git repository. A repository can have two different operation modes:  
-
* it can either be in '''mirror mode''', which is meant for mirroring an existing git repository hosted elsewhere. In this mode the system will automatically mirror the selected git repo using a cron job. This repository will not accept pushes (ie. code commits) from project members
+
* it can either be in '''mirror mode''', which is meant for mirroring an existing Git repository hosted elsewhere. In this mode the system will automatically mirror the selected Git repo using a cron job. This repository will not accept pushes (i.e. code commits) from anyone (including project members)
-
* or can act as a '''push repo''', where project members will be able to directly commit their changes
+
* or it can act as a '''push repo''', where project members will be able to directly commit their changes
-
The server and the GForge frontend will communicate via [http://www.webdav.org/ WebDAV] over HTTPS. This will ensure a safer way for submitting passwords over the wire, as well as source codes that belong to "hidden garage projects".
+
The server and the GForge frontend will communicate via [http://www.webdav.org/ WebDAV] over HTTPS. This will ensure a safer way for submitting passwords over the wire, as well as source code that belongs to "hidden garage projects".
-
In order to setup this backend we will consult the [http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt instructions from Rutger Nijlunsing] and will reuse our existing HTTP Basic Authentication schema we have for subversion users.
+
In order to setup this backend we will consult the [http://www.kernel.org/pub/software/scm/git/docs/howto/setup-git-server-over-http.txt instructions from Rutger Nijlunsing] and will reuse the existing HTTP Basic Authentication schema we have for subversion users.
=== Prerequisites ===
=== Prerequisites ===
-
* Dedicated host for git repositories and bidirectional SSH and HTTPS connections to garage.
+
* Dedicated host for Git repositories and bidirectional SSH and HTTPS connections to garage.
* DNS entry for the server (suggestion: git.maemo.org)
* DNS entry for the server (suggestion: git.maemo.org)
Line 47: Line 47:
== Phase 2 ==
== Phase 2 ==
-
During this phase we will write a GForge plugin in PHP that will offer a web interface for browsing the git repositories. With the help of this tool one can also view syntax highlighted diffs between revisions. Later the plugin can be extended with other functionality to support more git commands, and eventually offer a full web based repository management.
+
During this phase we will write a GForge plugin in PHP that will offer a web interface for browsing the Git repositories. With the help of this tool one can also view syntax highlighted diffs between revisions. Later the plugin can be extended with other functionality to support more Git commands, and eventually offer a full web based repository management.
=== Prerequisites ===
=== Prerequisites ===
Line 59: Line 59:
== Phase 3 ==
== Phase 3 ==
-
The current plan is to offer a web front-end for migrating subversion repositories to git. On the server side we try to use [http://www.kernel.org/pub/software/scm/git/docs/git-svn.html git-svn] to get the selected or all svn revisions and "import" them to a git tree. After the migration is completed the projects can disable the subversion repository and continue the work in git.
+
The current plan is to offer a web front-end for migrating subversion repositories to Git. On the server side we try to use [http://www.kernel.org/pub/software/scm/git/docs/git-svn.html git-svn] to get the selected or all SVN revisions and "import" them into a Git tree. After the migration is completed the projects can disable their subversion repository and continue their work in Git.
=== Prerequisites ===
=== Prerequisites ===
Line 82: Line 82:
| GForge Advanced Server Edition [http://gforgegroup.com/es/]
| GForge Advanced Server Edition [http://gforgegroup.com/es/]
|-
|-
-
| svn
+
| SVN
| subversion
| subversion
|-
|-

Revision as of 09:10, 1 December 2008

Contents

Overview

The purpose of this page is to describe details of the "Git for garage" project that is being kicked off at the beginning of December 2008.

Background

Garage has been a successful hosting environment for Maemo projects since 2006. The tool that powers garage is GForge with some modifications done by the Maemo team. Software projects coming to garage can only use one source code revision control system, that is subversion, aka SVN. Ever since the Linux kernel has been maintained by Git we have been asked to offer Git for garage projects as well. The time has finally come and we are now developing the changes.

The GForge team has developed a Git plugin which provides the functionality we are trying to achieve, but their plugin is meant for the Advanced Server edition of GForge. GForge AS is not in line (both code- and license wise) with the open source version we have at garage. Therefore we decided to write a free plugin for garage, which could be used by on any GForge 4.5.20+ installations.

Plans

The full Git offering for Maemo projects will come in 3 phases.

  • In the first phase we will offer Git for the new garage projects. These projects may choose Git as their VCS. They will get a repository on a Maemo server (the name will be probably git.maemo.org) which they can start using immediately. Project members will automatically get commit access, while non-members will be able to pull code using [standard Git tools]. This great page helps subversion users to get started with Git commands.
  • In the second phase we will create a web interface for browsing Git trees, viewing commits and diffs. The features will be similar to those available for subversion repositories today.

We will reuse features and probably source codes from existing, open source projects, such as gitweb or git-php. The new interface will be seamlessly integrated with the rest of GForge.

  • In the last phase we will try to provide a mechanism for SVN to Git migration. This will help existing projects to convert their repository into Git. Details of this phase is still to be worked out.

All the software and documentation will be hosted as ggit on garage.


Phase 1

This phase requires a server that for hosting the git repositories. Each project on garage will have its own, dedicated git repository. A repository can have two different operation modes:

  • it can either be in mirror mode, which is meant for mirroring an existing Git repository hosted elsewhere. In this mode the system will automatically mirror the selected Git repo using a cron job. This repository will not accept pushes (i.e. code commits) from anyone (including project members)
  • or it can act as a push repo, where project members will be able to directly commit their changes

The server and the GForge frontend will communicate via WebDAV over HTTPS. This will ensure a safer way for submitting passwords over the wire, as well as source code that belongs to "hidden garage projects".

In order to setup this backend we will consult the instructions from Rutger Nijlunsing and will reuse the existing HTTP Basic Authentication schema we have for subversion users.

Prerequisites

  • Dedicated host for Git repositories and bidirectional SSH and HTTPS connections to garage.
  • DNS entry for the server (suggestion: git.maemo.org)

Estimated Time of Completion

End of week 50, 2008.

Phase 2

During this phase we will write a GForge plugin in PHP that will offer a web interface for browsing the Git repositories. With the help of this tool one can also view syntax highlighted diffs between revisions. Later the plugin can be extended with other functionality to support more Git commands, and eventually offer a full web based repository management.

Prerequisites

  • Phase 1 completed

Estimated Time of Completion

End of week 51, 2008.

Phase 3

The current plan is to offer a web front-end for migrating subversion repositories to Git. On the server side we try to use git-svn to get the selected or all SVN revisions and "import" them into a Git tree. After the migration is completed the projects can disable their subversion repository and continue their work in Git.

Prerequisites

  • Phase 1 and Phase 2 completed

Estimated Time of Completion

End of week 3, 2009.

Acronyms

Acronym Meaning
git British English slang for a stupid or unpleasant person [1]
GForge AS GForge Advanced Server Edition [2]
SVN subversion
VCS Version Control System
WebDAV Web-based Distributed Authoring and Versioning
HTTPS Hypertext Transfer Protocol over Secure Socket Layer