RedmineRepositories » History » Revision 31
« Previous |
Revision 31/63
(diff)
| Next »
Stephen McGinty, 2010-06-06 01:16
Updated the Git post-receive hook instruction to work with up-to-date git versions.
Repositories¶
- Table of contents
- Repositories
General information¶
Redmine natively supports integration with different SCM-tools: Subversion, CVS, Mercurial, Darcs, Git, and Bazaar.
Note that you need to install the appropriate binaries on your Redmine host and make sure that these binaries are available in the PATH
environment variable:
SCM | Tested with | Comments |
Subversion | 1.3 & 1.4 & 1.5 & 1.6 | 1.3 or higher required |
CVS | 1.12.12 | 1.12 required, won't work with CVSNT |
Mercurial | 0.9.3 | |
Bazaar | 1.0.0.candidate.1 & 2.0.4 | |
Darcs | 1.0.7 | |
Git | 1.5.4.2 |
For example, if you want to access Subversion repositories in Redmine, you'll have to install the svn binaries on the Redmine host. Redmine currently doesn't make use of the Ruby Bindings for Subversion.
Attaching an existing repository to a project¶
In the project settings, make sure that the 'Repository' module is enabled and go to the 'Repository' tab.
Select the SCM that corresponds to your repository and enter the path or URL of your repository.
Important: When you first browse the repository, Redmine retrieves the description of all of the existing commits and stores them in the database.
This is done only once per repository but can very long (or even time out) if your repository has hundreds of commits.
To avoid this, you can do it offline.
After having your repository declared in Redmine, run the following command:
$ ruby script/runner "Repository.fetch_changesets" -e production
All commits will be retrieved in the Redmine database.
Since Redmdine 0.9.x, you can use a link to execute fetch_changesets for on specific project, or all.
http://redmine.example.com/sys/fetch_changesets (=> fetches changesets for all active projects)
http://redmine.example.com/sys/fetch_changesets?id=foo (=> fetches changesets for project foo only)
Subversion repository¶
The usual protocols are supported (eg. http:
, svn:
, file:
), just enter the URL of the repository.
For example:
http://host/path/to/the/repository
You can specify a username and password if the repository requires authentication.
Note: if you want to access the repository using svn+ssh://
, you'll have to configure svn+ssh to be non-interactive.
This requires to setup a public/private key pair for ssh authentication.
CVS repository¶
Enter:- the URL of the repository (it can be either a path or a connection string, eg.
:pserver
). - the module name
For example:
:pserver:login:password@host:/path/to/the/repository
Git repository¶
Local environment setup¶
Redmine requires a bare and local repository to enable browsing through Redmine.
Imagine you want to browse the to-do list manager project "Donebox": its clone URL is git://github.com/ook/donebox.git
.
On the server where you're running Redmine, create a directory accessible by the user running your Redmine server:
$ sudo mkdir -p /var/redmine/git_repositories $ sudo chown rails:rails /var/redmine/git_repositories $ cd /var/redmine/git_repositories
Note the second line: it changes the ownership of the newly created directory to the user rails
and the group rails
. Of course, you have to replace it according to your server settings (it can be www-data
, apache
or when you are having a very bad sysadmin: root
). Keep in mind that this user needs to have the (local-)permissions to run the git
command.
Create the bare repository¶
After the preceding steps have been taken it is time to create our bare repository:
$ pwd /var/redmine/git_repositories $ git clone --bare git://github.com/ook/donebox.git donebox.git Initialized empty Git repository in /var/redmine/git_repositories/donebox.git/ remote: Counting objects: 401, done. remote: Compressing objects: 100% (246/246), done. remote: Total 401 (delta 134), reused 401 (delta 134) Receiving objects: 100% (401/401), 179.55 KiB | 185 KiB/s, done. Resolving deltas: 100% (134/134), done. $ cd donebox.git $ git remote add origin git://github.com/ook/donebox.git
Our bare repository is now created successfully! Now go to your Redmine project settings, go to the repositories tab and choose git
as the SCM, then put in the "Path to .git directory" (in our example this is /var/redmine/git_repositories/donebox.git/
) and save the settings. Have a look at your repository tab: you should now be able to browse your repository successfully.
Note: of course, this git repository won't update by itself. You'll have to git fetch
it regulary by hand, set up a cron job which will execute the git fetch
-command automatically for you or use a post-receive hook, like this one :
echo "Post receive-hook => updating Redmine repository" sudo -u my_redmine_user -p secret perl -we '`cd /redmine/repositories/my_repo.git && git fetch && git reset --soft refs/remotes/origin/master`'
Note the git reset, you'll need it to update the git tree and see your changes in the Repository view. The 'soft' option is required since it is a bare repository and the default option (mixed) will fail since there is no working tree.
If you are using github, you can use the Github Hook Plugin
Bare repository on Windows¶
If your bare repository is install on Windows, adding :
;%GIT_PATH%\cmd;%GIT_PATH%\bin;to your %PATH% environment variable.
Where %GIT_PATH% is the install directory of Git (eg: C:/Git)
Mercurial repository¶
To synchronize with a Mercurial repository, you will have to have a local clone of the repository on the same server you have Redmine installed on. Let's say you put Redmine in /var/www/redmine.example.com/www and have put your mercurial repository in /var/www/sources.example.com/repo/example, you would have to select Mercurial as a SCM, then enter /var/www/sources.example.com/repo/example in the repository text box.
This will start checking out the Mercurial repository, and you won't see the results straight away. Wait for a few seconds (or possibly minutes), and click the Repository tab of your project (not of your configuration settings). You should now see the results appear.
Bazaar repository¶
Put in the full path to your repository in "Root directory"
i.e. /home/username/bzr/repo/trunk
You'll need to make sure that bzr and bzrlib can be found in ENV['PATH'] and ENV['PYTHONPATH'] respectively.
ie. edit config/environment.rb and add:
ENV['PYTHONPATH'] = '/path/to/pythonlib' ENV['PATH'] = "#{ENV['PATH']}:/path/to/bzr/bin"
Darcs repository¶
TBD
Repository user-mapping¶
TBD
Updated by Stephen McGinty over 14 years ago · 31 revisions