问题:
在redmine中配置项目的版本库为git时,第一次配置好,会自动提取git中的信息,但是之后做提交操作,使用hook调用/sys/fetch_changesets,触发刷新,redmine没有跟着更新,这是为何?
调查:
尝试多次修改那个几个设置,都不起作用,最终经过尝试确认,另外也无意中看到网上有人说,需要手动到版本库路径下拉取,然后再去调fetch_changesets。也就是说redmine的fetch_changesets只是单纯的从指定的git中提取版本库信息到数据库,不会做从远程仓库拉取操作
解决方案:
方案一:
在git服务端,push的hook中添加一步,在redmine配置的版本库路径下做次拉取,然后再去fetch_changesets。
此方案操作简单,但限制不小,要么git服务和redmine在一台机子上,方便hook直接在redmine版本库路径下pull,要么自己想法让redmine所在机器提供接口进行相应的pull
方案二:
修改redmine代码,lib\redmine\scm\adapters\git_adapter.rb文件def branches处
def branches logger.info "2. reset --hard origin" cmd_args = %w|branch --no-color --verbose --no-abbrev| ......... def git_cmd(args, options = {}, &block) 将full_args = ['--git-dir', repo_path]一行改为如下(这样命令才可以在正确的路径下执行):
|
这个是在redmine 3.4.2上修改的,不排除后续redmine后续版本此处有变化,因此后面升级还需要留意该问题