| Version 4 (modified by , 8 years ago) (diff) |
|---|
Postavi na push serveru git config
[trac]
env-path = /home/pakel/trac/sites/pisarnica
reponame = gitrepo
Napravi git hook post-receive unutar tog repozitorija
Unutar hooks folder se kreira dathooksoteka post-receive (možda je dobro chmod a+x napraviti da se može executati)
#! /bin/sh
# -*- coding: utf-8 -*-
#
# Copyright (C) 2014 Edgewall Software
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://trac.edgewall.com/license.html.
#
# This software consists of voluntary contributions made by many
# individuals. For the exact contribution history, see the revision
# history and logs, available at http://trac.edgewall.org/.
#
# For each Git repository that has to be monitored by your Trac
# environment, you need to modify the hooks in order to call the
# present script:
#
# Configurations using git-config
# -------------------------------
# trac.env-path
# Path to your Trac environment.
# trac.admin-path
# Optional, path to trac-admin command. The default is "trac-admin".
# trac.reponame
# Optional, repository name in your Trac environment. The default
# is "(default)".
#
tracenv="`git config trac.env-path`"
if [ -z "$tracenv" ]; then
echo "trac.env-path is missing" 1>&2
exit
fi
if [ ! -r "$tracenv/VERSION" ]; then
echo "'$tracenv' doesn't seem to be a Trac environment" 1>&2
exit
fi
tracadmin="`git config trac.admin-path`"
[ -z "$tracadmin" ] && tracadmin=trac-admin
reponame="`git config trac.reponame`"
[ -z "$reponame" ] && reponame='(default)'
log="/tmp/mylog.log"
nullrev=0000000000000000000000000000000000000000
grep_args=-vF
changed=0
revlist_args=
while read oldrev newrev refname; do
grep_args="$grep_args -e $refname"
if [ $newrev != $nullrev ]; then # branch is removed
changed=1
revlist_args="$revlist_args $newrev"
if [ $oldrev != $nullrev ]; then # branch is updated
revlist_args="$revlist_args ^$oldrev"
fi
fi
done
exec >>"$log" 2>&1
if [ $changed = 0 ]; then
# no new commits, but repository is changed
nohup "$tracadmin" "$tracenv" repository sync "$reponame" &
else
refnames="`
git for-each-ref --format='%(refname)' refs/heads | \
grep $grep_args`"
for refname in $refnames; do
revlist_args="$revlist_args ^$refname"
done
echo "[`date`] $revlist >> "$log"
echo "[`date`] git rev-list --reverse $revlist_args >> "$log"
echo "[`date`] \"$tracadmin\" \"$tracenv\" changeset added \"$reponame\"" >> "$log"
nohup $SHELL <<_EOS_ &
git rev-list --reverse $revlist_args | \
xargs "$tracadmin" "$tracenv" changeset added "$reponame"
_EOS_
fi
Trac git postavke i omogući zatvaranje ticketa kroz commit
- Enable GIT optional settings in Plugins menu of settings:
- tracopt.versioncontrol.git.git_fs.*CsetPropertyRenderer
- GitConnector
- GitwebProjectsRepositoryProvider
- tracopt.versioncontrol.git.git_fs.*CsetPropertyRenderer
- Allow updating tickets from commit messages:
- CommitTicketReferenceMacro
- CommitTicketUpdater
Snimi postavke i pojavit će se !Repositories menu u kojem treba dodati git repo:
- naziv: gitrepo (zato da ticket updater moze pratiti samo ovaj repozitorij ako ih je vise)
- puni path do git repozitorija, ako je bare git onda je to root od tog gita, inače je to folder unutar repozitorija ".git"