Project

General

Profile

using git with web services and fetch_updates

Added by Sean Davis over 13 years ago

I would like to use web services to update my local git repository after each receive by the server. As a test, though, I have been calling:

curl "http://server.example.gov/sys/fetch_changesets?key=API_KEY" 

This results in the log in:
Processing SysController#fetch_changesets (for 128.231.2.3 at 2011-02-05 10:24:42) [GET]
  Parameters: {"key"=>"API_KEY"}
Completed in 7095ms (View: 1, DB: 70) | 200 OK [http://.....]

However, I see no change in my git repository view. Running:
ruby script/runner "Repository.fetch_changesets" -e production

Also does not produce a change. The only thing that I can get to work is:
#!/bin/bash
for d in /Users/sdavis/redmine/git_repositories/*
do
  cd $d
  /usr/local/bin/git fetch
  /usr/local/bin/git reset --soft refs/remotes/origin/master
  cd ..
done

running as a cron script. Any suggestions as to whether or not the web service approach should be expected to work? It would be nice to just add the curl call to a post-receive hook.

Thanks,
Sean


Replies (2)

RE: using git with web services and fetch_updates - Added by Felix Schäfer over 13 years ago

Sean Davis wrote:

Any suggestions as to whether or not the web service approach should be expected to work? It would be nice to just add the curl call to a post-receive hook.

The /sys/fetch_changesets call only tells redmine to update the view it has of the repository configured for the project(s). In case of a git repository, it has to be local, but redmine won't refresh the local repository, sorry.

The best way to achieve what you are looking for would be to add a post-receive hook to the repo you are pushing to that would in turn push to the repo on the redmine box, and then have a post-receive on the redmine-box repo callin the /sys/fetch_changesets.

RE: using git with web services and fetch_updates - Added by Sean Davis over 13 years ago

The best way to achieve what you are looking for would be to add a post-receive hook to the repo you are pushing to that would in turn push to the repo on the redmine box, and then have a post-receive on the redmine-box repo callin the /sys/fetch_changesets.

This makes perfect sense. In this case, my local repo is behind a firewall and the remote repo is on github. So, I will have gone the route of a cron job to do the fetch and reset locally.

Thanks,
Sean

    (1-2/2)