1

最近、tracを0.10から1.0にアップグレードし、tracインスタンスをsvnおよびgitリポジトリに正常にリンクしました。

ただし、受信後のgitリポジトリのセットアップ中にいくつかの大きな問題が発生しました。

ここでプラグインスクリプトを試しました:

http://trac-hacks.org/wiki/GitPlugin#post-receivehookscripts

しかし、git post receiveは、標準入力で$OLD_REVと$NEW_REVを提供していないように見えるため、これは機能しません。

ウィキはまた、次のように呼び出すだけでよいと述べています

 trac-admin TRAC_ENV changeset added <commitid(s)>

だから私はgitの受信後のスクリプトに次のように入れました、

REV=$(git rev-parse HEAD)

trac-admin <trac-repo>  changeset added <repo-name> $REV 

ほとんどの場合は機能します。ただし、ユーザーが一度に複数のコミットをプッシュしようとすると、git rev-parse HEAD(最後のプッシュに属するコミットIDのリストではなく)最後のコミットIDのみが取得されるため、Tracから(node_changetracのテーブルから)一部のコミットが失われます。 db)。

最新のgitpushのすべてのコミットIDを取得する方法があるのだろうか?または、私は実際にここで何かを見落としていましたが、それを行うためのもっと簡単な方法がいくつかありますか?

ありがとう。

4

2 に答える 2

2

わかりました、私はちょうどこのリンクを見つけました:

git:受信後フックの空の引数

それは私に素晴らしいヒントを与えました、そしてこれが私が問題を解決した方法です

post-receivegitの:

read oldrev newrev refname
REV=$(git rev-list $oldrev..$newrev)
trac-admin <trac-repo>  changeset added <repo-name> $REV 

psは、リビジョン情報が実際に標準入力を介してスクリプトに渡されることを意味します。tracプラグインだけが何らかの理由でそれを取得できませんでした。

于 2013-03-20T10:40:17.140 に答える
0

複数のブランチを使用する場合にコミットの重複を防ぐこの要点を確認してください。

https://gist.github.com/kenaniah/5471280

于 2013-04-27T00:19:49.980 に答える