Git For Garage

(Phase 1)
(Undo revision 45999 by 114.79.28.10 (Talk) vandalism/spam)
 
(16 intermediate revisions not shown)
Line 1: Line 1:
-
== Overview ==
+
[http://git-scm.com/ Git] is available as an alternative version control system to [[Subversion]] for [[Getting started with Maemo Garage|Garage]] projects.
-
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.
+
== Requesting Git for your Garage project ==
-
== Background ==  
+
=== New Projects ===
-
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].
+
When you start a new project at garage you can select "git" to be the default version control system. At the bottom of the request form you can pick between "svn" and "git". Your new project will automatically have a "git" repository.
-
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 any GForge 4.5.20+ installations.
+
=== Old Project Can Request Conversion ===
-
== Plans ==
+
This feature has not been advertized, but it is possible to convert an existing subversion repository to a "git" repo. All you need to do is to go to the "Admin" page of your project's SCM section and click the "Convert to git repository" button.
-
The full Git offering for Maemo projects will come in 3 phases.  
+
Your request will be scheduled and you can monitor the progress through a link that will be shown to you as soon as you hit the button.
-
* 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.
+
The conversion works the best (tm) with svn repositories that have "standard layout". Standard layout means that the root of the subversion repo has:
-
* 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].
+
-trunk
-
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.
+
-branches
-
* 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.
+
-tags
-
All the software and documentation will be hosted as [http://garage.maemo.org/projects/ggit ggit on garage].
+
Branches and tags will be converted to proper git branches, while trunk will be the master branch.
 +
If your project has a 'www' directory in its root, then it is also supposed to be converted.
-
== Phase 1 ==
+
Conversion also works for repositories that do not have the standard layout. However this features was just recently introduced, so bugs might surface.
-
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:
+
If the conversion was OK, then your subversion repo will be disabled, meaning that no further can commits can go into it. However it will remain safe on our servers and if you remember the URL than you can even read it.
-
* 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)
+
If you are unhappy with the result of the conversion then please request to restore it. We will revert your svn repository just like it was at the time of your conversion request.  
-
* 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 code that belongs to "hidden garage projects".
+
If the conversion FAILED, then the system will not do any changes to your project settings and your svn repo remains usable.
-
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.
+
In case you have questions, feedback or experience problems please report them through bugzilla, or just send an email to "garage at maemo dot org".
-
=== Prerequisites ===
+
== Garage-specific information ==
-
* Dedicated host for Git repositories and bidirectional SSH and HTTPS connections to garage.
+
Git on Garage uses the https access method via cURL (most Git installations use Git over ssh, and this is currently under development for Garage). This may cause problems due to the security certificate on https://vcs.maemo.org, so if you experience any issues with 'git clone' or 'git push' please try to set the <code>GIT_SSL_NO_VERIFY</code> environment variable to 1, for example:
-
* DNS entry for the server (suggestion: git.maemo.org)
+
export GIT_SSL_NO_VERIFY=1
 +
in a terminal on Linux using bash.
-
=== Estimated Time of Completion ===
+
For proxy users, the <code>https_proxy</code> environment variable must be set, for example:
 +
export https_proxy="172.21.112.250:8080"
-
End of week 50, 2008
+
To authenticate, make sure you have filled in your Garage credentials to ~/.netrc, for example:
-
   
+
  machine vcs.maemo.org
-
=== Completion ===
+
login __garage user name__
 +
password __garage password__
-
End of week 1, 2009
+
== Additional info ==
-
== Phase 2 ==
+
The information on the Garage SCM page for Git projects seems incorrect or incomplete. If you want to push you will need to specify:
-
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.
+
<code><nowiki>https://<garage username>@vcs.maemo.org/git/<project name></nowiki></code>...as the URL of the repository.
-
=== Prerequisites ===
+
== Further reading ==
-
* Phase 1 completed
+
* [http://git-scm.com/documentation Git documentation] at the Git homepage
 +
* [http://git.or.cz/course/svn.html Subversion to Git documentation] for users familiar with Subversion but new to Git
 +
* See the [[Git for Garage wishlist]]
-
=== Estimated Time of Completion  ===
+
[[Category:Community]]
-
 
+
[[Category:Development]]
-
'''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 [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 ===
+
-
 
+
-
* Phase 1 and Phase 2 completed
+
-
 
+
-
=== Estimated Time of Completion ===
+
-
 
+
-
'''End of week 3, 2009.'''
+
-
 
+
-
== Acronyms ==
+
-
 
+
-
{| border="1" cellpadding="2" cellspacing="0"
+
-
|-
+
-
! Acronym
+
-
! Meaning
+
-
|-
+
-
| git
+
-
| British English slang for a stupid or unpleasant person [http://en.wikipedia.org/wiki/Git_(software)#Name]
+
-
|-
+
-
| GForge AS
+
-
| GForge Advanced Server Edition [http://gforgegroup.com/es/]
+
-
|-
+
-
| SVN
+
-
| subversion
+
-
|-
+
-
| VCS
+
-
| Version Control System
+
-
|-
+
-
| WebDAV
+
-
| Web-based Distributed Authoring and Versioning
+
-
|-
+
-
| HTTPS
+
-
| Hypertext Transfer Protocol over Secure Socket Layer
+
-
|-
+
-
|}
+

Latest revision as of 06:28, 15 December 2011

Git is available as an alternative version control system to Subversion for Garage projects.

Contents

[edit] Requesting Git for your Garage project

[edit] New Projects

When you start a new project at garage you can select "git" to be the default version control system. At the bottom of the request form you can pick between "svn" and "git". Your new project will automatically have a "git" repository.

[edit] Old Project Can Request Conversion

This feature has not been advertized, but it is possible to convert an existing subversion repository to a "git" repo. All you need to do is to go to the "Admin" page of your project's SCM section and click the "Convert to git repository" button.

Your request will be scheduled and you can monitor the progress through a link that will be shown to you as soon as you hit the button.

The conversion works the best (tm) with svn repositories that have "standard layout". Standard layout means that the root of the subversion repo has:

-trunk

-branches

-tags

Branches and tags will be converted to proper git branches, while trunk will be the master branch.

If your project has a 'www' directory in its root, then it is also supposed to be converted.

Conversion also works for repositories that do not have the standard layout. However this features was just recently introduced, so bugs might surface.

If the conversion was OK, then your subversion repo will be disabled, meaning that no further can commits can go into it. However it will remain safe on our servers and if you remember the URL than you can even read it.

If you are unhappy with the result of the conversion then please request to restore it. We will revert your svn repository just like it was at the time of your conversion request.

If the conversion FAILED, then the system will not do any changes to your project settings and your svn repo remains usable.

In case you have questions, feedback or experience problems please report them through bugzilla, or just send an email to "garage at maemo dot org".

[edit] Garage-specific information

Git on Garage uses the https access method via cURL (most Git installations use Git over ssh, and this is currently under development for Garage). This may cause problems due to the security certificate on https://vcs.maemo.org, so if you experience any issues with 'git clone' or 'git push' please try to set the GIT_SSL_NO_VERIFY environment variable to 1, for example:

export GIT_SSL_NO_VERIFY=1

in a terminal on Linux using bash.

For proxy users, the https_proxy environment variable must be set, for example:

export https_proxy="172.21.112.250:8080"

To authenticate, make sure you have filled in your Garage credentials to ~/.netrc, for example:

machine vcs.maemo.org
login __garage user name__
password __garage password__

[edit] Additional info

The information on the Garage SCM page for Git projects seems incorrect or incomplete. If you want to push you will need to specify:

https://<garage username>@vcs.maemo.org/git/<project name>...as the URL of the repository.

[edit] Further reading