Jump to content

Git repository on this server: Difference between revisions

From HW wiki
No edit summary
Line 55: Line 55:
Example:
Example:
  fork-git-repo /var/git/orte.git orte-fixes
  fork-git-repo /var/git/orte.git orte-fixes
Unlike personal repositories, forks can be [http://rtime.felk.cvut.cz/gitweb/orte.git/forks seen in gitweb interface].


=== Using personal repository to contribute to other projects ===
=== Using personal repository to contribute to other projects ===

Revision as of 14:14, 3 April 2009

This server can host two types of Git repositories.

Central repositories
These repositories are located under /var/git directory and can be browsed online. This repository can be either created by server administrators or any user can fork an existing repository. Central repositories are usually public (read-only accessible to everybody).
Personal repositories
Any user with shell access can can create his/her own git repository under his/her home directory and make it public using git protocol.

Creating a personal repository

ssh login@rtime.felk.cvut.cz
mkdir $HOME/myproject.git
cd $HOME/myproject.git
git init --bare --shared=everybody

If you want to make your repository public, it has to be accessible by user nobody. It is usually sufficient to give "x" permission to your home directory:

setfacl -m user:nobody:x $HOME

First push

After an empty repository is created either by you (personal) of by an admin (central), you can push (upload) data to it:

cd your/project
git init              # initializes git repository in your project's directory
git add .             # tells git to track all files in your project
git commit            # commits the added files to the repository
  • Then "connect" your repository to the one on this server (replace login by your login and repo-name by the name of repository created for you)
git remote add origin login@rtime.felk.cvut.cz:/var/git/repo-name.git
git config branch.master.remote origin
git config branch.master.merge refs/heads/master
  • Push your sources to the server
git push --all

How can other people access your repository

Once the repository is not empty, everybody can use one of following commands to work with the code in the repository (it is not necessary add origin and configure remote branches as described above):

Central repository

git clone login@rtime.felk.cvut.cz:/var/git/repo-name.git
git clone git://rtime.felk.cvut.cz/repo-name.git

Personal repository

git clone git://rtime.felk.cvut.cz/~yourlogin/repo-name.git


For other hints refer to the git documentation or to this page.

Contributing to other projects

Forking projects hosted on this server

If you have an SSH account on this server, you can create a fork of any central git repository even if you do not have write permission to the repository. Fork is clone of other repository which references the cloned repository and disk space is not wasted. To create a fork just run:

fork-git-repo /var/git/<repo-name>.git [ <name-of-fork> ]

If you omit name of fork, your login will be used instead.

Example:

fork-git-repo /var/git/orte.git orte-fixes

Unlike personal repositories, forks can be seen in gitweb interface.

Using personal repository to contribute to other projects

If you do not have write access to the repository of some project (not necessary a central repository on this server), you can work in your personal repository then ask somebody with write access to merge your changes.

  1. Clone a central repository
    git clone git://rtime.felk.cvut.cz/project.git
  2. Add your rtime personal repository as remote (using SSH access)
    git remote add personal yourlogin@rtime.felk.cvut.cz:myproject.git
  3. Edit files in project...
  4. Commit your changes
    git commit ...
  5. Push your changes to your personal repository
    git push personal
  6. Write email to somebody with write access to merge changes in git://rtime.felk.cvut.cz/~yourlogin/myproject.git