1

Trac 1.0をセットアップし、gitリポジトリと同期しました。CommitTicketUpdater
で遊んでいて、提供された構文を使用してgit commitの問題を解決しようとしているときに、「closes#1」、「close#1」、「fixes#1」[これは機能しませんでした]、カップルをリセットする必要がありましたコマンドコミットを元に戻すブランチが何度もあります。リセットを行うたびに、tracは同期を失い、次のようにして再同期する必要がありました。

trac-admin / path / to/projectリポジトリ再同期"*"

そのたわごとは厄介で、完了するのに少し時間がかかります。足りないものはありますか?同期を緩めずにブランチをリセットする方法はありますか?

ありがとう。

4

2 に答える 2

2

Trac と git は異なるパラダイムで動作します。Git は、コミットを元に戻したり、リビジョンを並べ替えたりすることで、履歴を変更できることを非常に喜んでいます。Trac は、直線的で不変のタイムラインを前提としています (Subversion で使用するために設計されたことを思い出してください)。チケットを閉じるメッセージでコミットすると、チケットは Trac のデータベース内で閉じられます。コミットをリセットすると、Trac は戻って新しい git タイムラインに一致するように独自のタイムラインを更新しません。再同期は骨の折れるプロセスですが (ご存じのとおり)、タイムラインが変更されたことを Trac に伝える唯一の方法です。

この問題を回避する 1 つの方法は、開発作業に使用するリポジトリとは異なるリポジトリを Trac で監視することです。変更をテストして、元に戻す必要がないことを十分に確信できる場合にのみ、Trac のリポジトリに変更をプッシュしてください。これにより、タイムラインは Trac の観点からは線形に保たれますが、git のすべての機能を通常どおり使用することができます。

これは実際には、どのシステムでも解決するのが難しい問題です。チケットのオープン/クローズ コマンド (たとえば) を使用してコミットに影響を与える方法で git リポジトリのタイムラインを変更すると、チケットのチケット番号またはチケット コメントの順序が変更されるリスクがあります。これにより、それらのアイテムへの既存のリンクまたは参照が壊れます。

リポジトリの変更が課題トラッカーと同期されていることを確認する 1 つの方法は、どこでもバグのようなシステムを使用して、バグ リスト/詳細をリポジトリ内に保存することです。このようなツールは通常、Trac ほどフル機能ではありませんが、その分散型の性質は、分散バージョン管理システムにより適している場合があります。

于 2012-10-03T00:50:34.717 に答える
0

CommitTicketUpdater を使用するために、ベア リポジトリを作成し、次のフックを追加しました: https://gist.github.com/kenaniah/5471280 (.sh 拡張子なしでリポジトリのフック ディレクトリにドロップし、実行可能にします)。

次に、呼び出す cron ジョブを追加したところgit fetch; hooks/post-fetch、分岐構造に関係なく、新しいコミットのみが trac に自動的に通知されるようになりました。

于 2013-05-06T18:08:26.757 に答える