3a7de96736
For git 1.7 compat. 'git -C' was introduced in 1.8.5 |
||
---|---|---|
app/models/repository | ||
config/locales | ||
lib/redmine_git_remote | ||
DEVNOTES.md | ||
init.rb | ||
README.md |
redmine_git_remote
Redmine plugin to automatically clone and remote git repositories.
Installation
Install the plugin as usual:
cd REDMINE_ROOT/plugins
git clone https://github.com/dergachev/redmine_git_remote
Then enable the new GitRemote SCM type in http://redmine-root/settings?tab=repositories
Supporting private repos
For security sake, we don't support cloning over HTTPS with username password, but only via SSH.
For example:
- This private repo will fail to clone:
https://github.com/dergachev/my-secret-repo
- Instead, use the SSH form:
git@github.com:evolvingweb/my-secret-repo.git
If you're going to use the SSH form, you'll need to install the appropriate SSH
keys to ~/.ssh/id_rsa
(in the home directory of your redmine webserver user,
likely www-data).
Some extra tips:
- For GitHub/GitLab, we have found it too troublesome to install repository-specific SSH keys. Instead we ended up creating recommend creating a dedicated account for redmine and installing the keys there.
- On Ubuntu, the
www-data
user's $HOME is/var/www
, and by default it's owned by root. That means you might have to do this before installing Redmine:sudo mkdir /var/www/.ssh; sudo chown www-data:www-data /var/www/.ssh
Usage
This plugin defines a new repository type, GitRemote, which allows you to associate a remote repository with your Redmine project. First create a new repository of type GitRemote, enter the clone URL. The identifier and path will be auto-generated, but can be overriden.
On submitting the repository creation form, the identifier and url
(filesystem path) fields will be auto-generated (if not explicitly provided).
For example, if you enter https://github.com/dergachev/vagrant-vbox-snapshot
as the Clone URL,
it will prefill the Identifier and filesystem path fields as follows:
- Identifier:
vagrant-vbox-snapshot
- Path:
REDMINE_PLUGINS_PATH/redmine_git_remote/repos/github.com/dergachev/vagrant-vbox-snapshot
Once the remote URL is validated, the plugin creates an empty clone at the specified path.
This plugin hooks into the core Repository.fetch_changesets
to automatically
run git fetch --all
on all GitRemote managed repositories as Redmine is about
to pull in changesets from the local repos.
To avoid slowing down the GUI, we recommend unchecking the "Fetch commits automatically" setting at http://redmine-root/settings?tab=repositories and relying on the following cron job as per Redmine Wiki Instructions:
*/5 * * * * cd /home/redmine/redmine && ./script/rails runner \"Repository.fetch_changesets\" -e production >> log/cron_rake.log 2>&1
To trigger fetch manually, run this:
cd /home/redmine/redmine && ./script/rails runner "Repository.fetch_changesets" -e production
Notes:
- Tested on Redmine 2.6.
- Currently alpha level, use at your own risk.
- Currently insecure, only install if all redmine project admins are trusted.
- This plugin doesn't clean-up (delete) cloned repos from the file system when the record is deleted from Redmine.