16

私は TotroiseSVN をインストールしており、私のリポジトリの大部分は C:\subversion\ からチェックインおよびチェックアウトしており、いくつかはネットワーク共有からチェックインおよびチェックアウトしています (最初にこの質問を投稿したとき、これを忘れていました)

これは、「subversion」サーバー自体を持っていないことを意味します。

TortoiseSVN と Fogbugz を統合するにはどうすればよいですか?

編集:斜体を挿入

4

5 に答える 5

18

私はこの問題を調査しており、なんとか機能させることができました。いくつかの小さな問題がありますが、回避することができます。

この問題には、次の 3 つの異なる部分があります。

  1. TortoiseSVN 部分- TortoiseSVN を取得して Bugid とハイパーリンクを svn ログに挿入する

  2. FogBugz 部分- FogBugz に SVN 情報と対応するリンクを挿入させる

  3. WebSVN 部分- FogBugz からのリンクが実際に機能することを確認する

パート1の手順は別の回答にありますが、実際には必要以上のことをしています. フックに関するものは、実際にはパート 2 用であり、指摘されているように、「そのままでは」機能しません。

確認のために、SVN サーバー (つまり、ファイルベースのリポジトリ) なしでTortoiseSVNを使用することを検討しています。

UNC パスを使用してリポジトリにアクセスしていますが、ローカル ドライブまたはマップされたドライブでも機能します。

これはすべて、TortoiseSVN v1.5.3 および SVN サーバー v1.5.2 で動作します (パート 2svnlook.exeではサーバー パッケージに含まれている必要があるため、SVN サーバーをインストールする必要があります。実際に SVN サーバーとして動作するように構成するわけではありません)。別のコンピューターからコピーsvnlook.exeして、パスのどこかに置くことができます。

パート 1 - TortoiseSVN

TortoiseSVN プロパティを作成するだけで、SVN ログのリンクを取得できます。

以前の手順は問題なく機能します。便宜上、ここに引用します。

プロパティを構成する

  1. 作業するチェックアウト済みプロジェクトのルート ディレクトリを右クリックします。

  2. 「TortoiseSVN -> プロパティ」を選択します

  3. [新規...] をクリックし、[プロパティ名] と [プロパティ値] にそれぞれ以下を挿入して、5 つのプロパティ値のペアを追加します (それぞれの [プロパティを再帰的に適用する] にチェックを入れてください)。

    bugtraq:label    BugzID:
    bugtraq:message  BugzID: %BUGID%
    bugtraq:number   true
    bugtraq:url      http://[your fogbugz URL here]/default.asp?%BUGID%
    bugtraq:warnifnoissue   false
    
  4. 「OK」をクリック

Jeff が言うように、作業コピーごとにそれを行う必要があるので、彼の指示に従ってプロパティを移行してください。

それでおしまい。TortoiseSVN は、コミット時に対応する FogBugz バグ ID へのリンクを追加します。それだけでよければ、ここでやめてください。

パート 2 - 霧虫

これを機能させるには、フック スクリプトを設定する必要があります。基本的に、各コミット後にバッチ ファイルが呼び出され、FogBugz への送信を行う VBS スクリプトが呼び出されます。VBS スクリプトは実際にはこの状況で問題なく機能するため、変更する必要はありません。

問題は、バッチ ファイルがサーバーフックとして機能するように記述されていることですが、クライアントフックが必要です。

SVN サーバーは、次のパラメーターを使用して post-commit フックを呼び出します。

<repository-path> <revision>

TortoiseSVN は、次のパラメータを使用してポストコミット フックを呼び出します。

<affected-files> <depth> <messagefile> <revision> <error> <working-copy-path>

それが機能しない理由です - パラメータが間違っています。正しいパラメーターが VBS スクリプトに渡されるように、バッチ ファイルを修正する必要があります。

TSVN がリポジトリ パスを渡さないことに気付くでしょう。これは問題ですが、次の状況では機能します。

  • リポジトリ名と作業コピー名が同じ
  • サブフォルダーではなく、作業コピーのルートでコミットを行います。

この問題を修正できるかどうかを確認し、修正できたらここに投稿します。

これが私の修正されたバッチファイルです(過度のコメントを許してください...)

セットアップに合わせてフックとリポジトリのディレクトリを設定する必要があります。

rem @echo off
rem   SubVersion -> FogBugz post-commit hook file
rem   Put this into the Hooks directory in your subversion repository
rem   along with the logBugDataSVN.vbs file

rem   TSVN calls this with args <PATH> <DEPTH> <MESSAGEFILE> <REVISION> <ERROR> <CWD>
rem   The ones we're interested in are <REVISION> and <CWD> which are %4 and %6

rem   YOU NEED TO EDIT THE LINE WHICH SETS RepoRoot TO POINT AT THE DIRECTORY 
rem   THAT CONTAINS YOUR REPOSITORIES AND ALSO YOU MUST SET THE HOOKS DIRECTORY

setlocal

rem   debugging
rem echo %1 %2 %3 %4 %5 %6 > c:\temp\test.txt

rem   Set Hooks directory location (no trailing slash)
set HooksDir=\\myserver\svn\hooks

rem   Set Repo Root location (ie. the directory containing all the repos)
rem   (no trailing slash)
set RepoRoot=\\myserver\svn

rem   Build full repo location
set Repo=%RepoRoot%\%~n6

rem   debugging
rem echo %Repo% >> c:\temp\test.txt

rem   Grab the last two digits of the revision number
rem   and append them to the log of svn changes
rem   to avoid simultaneous commit scenarios causing overwrites
set ChangeFileSuffix=%~4
set LogSvnChangeFile=svn%ChangeFileSuffix:~-2,2%.txt

set LogBugDataScript=logBugDataSVN.vbs
set ScriptCommand=cscript

rem   Could remove the need for svnlook on the client since TSVN 
rem   provides as parameters the info we need to call the script.
rem   However, it's in a slightly different format than the script is expecting
rem   for parsing, therefore we would have to amend the script too, so I won't bother.
rem @echo on
svnlook changed -r %4 %Repo% > %temp%\%LogSvnChangeFile%
svnlook log -r %4 %Repo% | %ScriptCommand% %HooksDir%\%LogBugDataScript% %4 %temp%\%LogSvnChangeFile% %~n6

del %temp%\%LogSvnChangeFile%
endlocal

リポジトリは に\\myserver\svn\あり、作業コピーはすべて「C:\Projects\」の下にあると仮定します。

  1. FogBugz アカウントに移動し、[Extras] -> [Configure Source Control Integration] をクリックします。

  2. Subversion 用の VBScript ファイルをダウンロードします (バッチ ファイルは気にしないでください)。

  3. フック スクリプトを格納するフォルダーを作成します。リポジトリと同じフォルダに入れました。例えば。\\myserver\svn\hooks\

  4. VBscript の名前を変更して.safe、ファイル名の末尾にある を削除します。

  5. 私のバージョンのバッチ ファイルをフック ディレクトリに保存します。post-commit-tsvn.bat

  6. 任意のディレクトリを右クリックします。

  7. 「TortoiseSVN > 設定」を選択します (最後のステップの右クリック メニュー)。

  8. 「フックスクリプト」を選択

  9. [追加] をクリックし、プロパティを次のように設定します。

    • フック タイプ: ポストコミット フック

    • 作業コピー パス: C:\Projects(または、すべてのプロジェクトのルート ディレクトリ)。

    • 実行するコマンド ライン: \\myserver\svn\hooks\post-commit-tsvn.bat(これは、ステップ 3 でフック ディレクトリを配置した場所を指す必要があります)

    • 「スクリプトが終了するのを待つ」にチェックを入れる

  10. [OK] を 2 回クリックします。

次回コミットして Bugid を入力すると、FogBugz に送信されます。リンクは機能しませんが、少なくともリビジョン情報はそこにあり、TortoiseSVN でログを手動で検索できます。

注: リポジトリ ルートがバッチ ファイルにハードコードされていることがわかります。その結果、同じルートを持たないリポジトリ (例: ローカル ドライブに 1 つとネットワークに 1 つ) からチェックアウトする場合は、2 つのバッチ ファイルと、TSVN のフック スクリプトの下にある 2 つの対応するエントリを使用する必要があります。設定。これを行う方法は、2 つの個別の作業コピー ツリー (リポジトリ ルートごとに 1 つ) を持つことです。

パート 3 - WebSVN

エラー、私はこれをしていません:-)

WebSVN ドキュメントを読むと、WebSVN は実際には SVN サーバーと統合されていないようです。他の SVN クライアントと同じように動作しますが、Web インターフェイスを提供します。理論的には、ファイルベースのリポジトリで問題なく動作するはずです。私はそれを試していません。

于 2008-12-16T00:03:30.553 に答える
11

この答えは不完全で欠陥があります! TortoisSVN から Fogbugz までのみ機能しますが、その逆は機能しません。バグを見ながら Fogbugz からバグが対処されているリビジョン番号を確認できるように、Fogbugz から逆方向に動作させる方法を知る必要があります。


役立つ URL

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-propertypage.html

http://tortoisesvn.net/issuetracker_integration


「フック」を設定します

  1. fogbugz アカウントに移動し、[Extras] > [Configure Source Control Integration] をクリックします。

  2. 「post-commit.bat」と Subversion 用の VBScript ファイルをダウンロードします。

  3. 簡単にアクセスできる一般的な場所に「hooks」ディレクトリを作成します (ファイル パスにスペースを入れないでください)。

  4. ファイルのコピーをフック ディレクトリに配置します。

  5. 「.safe」拡張子なしでファイルの名前を変更します

  6. 任意のディレクトリを右クリックします。

  7. 「TortoiseSVN > 設定」を選択します (最後のステップの右クリック メニュー)。

  8. 「フックスクリプト」を選択

  1. 「追加」をクリック

  2. プロパティを次のように設定します。

    • フック タイプ: ポストコミット フック

    • 作業コピー パス: C:\\Projects (または、すべてのプロジェクトのルート ディレクトリが何であれ。複数ある場合は、プロジェクトごとにこの手順を実行する必要があります。)

    • 実行するコマンド ライン: C:\\subversion\\hooks\\post-commit.bat (これは、ステップ 3 でフック ディレクトリを配置した場所を指す必要があります)

    • また、チェックボックスを選択して、スクリプトが終了するのを待ちます...

警告: 2 つのバックスラッシュを忘れないでください。「\\」

[OK...] をクリックします。

フック スクリプトの追加

注: スクリーンショットは異なります。スクリーンショットではなく、ファイル パスのテキストに従ってください...

この時点で、[Issue Tracker Integration] をクリックして [Fogbugz] を選択できるようです。いいえ。「利用可能な課題トラッカー プロバイダーがありません」というメッセージが返されるだけです。

  1. 「OK」をクリックして、設定ダイアログウィンドウ全体を閉じます

プロパティを構成する

  1. もう一度、作業するチェックアウト済みプロジェクトのルート ディレクトリを右クリックします (プロジェクトごとにこの「プロパティの構成」手順を実行する必要があります。以下の「プロジェクト間でのプロパティの移行」を参照してください)。

  2. 「TortoiseSVN > プロパティ」を選択します (最後のステップの右クリック メニュー)。

  3. [新規...] をクリックし、[プロパティ名] と [プロパティ値] にそれぞれ以下を挿入して、5 つのプロパティ値のペアを追加します。

bugtraq:label BugzID:
bugtraq:message BugzID: %%BUGID%%

bugtraq:number true

bugtraq:url http://[ fogbugz の URL をここに]/default.asp?%BUGID%

bugtraq:warnifnoissue false

プロパティウィンドウ 新しいプロパティの追加

  1. 「OK」をクリック

変更のコミットとログの表示

コミットするときに、コミットで対処するバグを 1 つ指定できます。この種のものは、各バグを修正した後にコミットすることを強制します...

コミット時に対処されたバグを指定する

ログを表示すると (プロジェクトのルートを右クリック、TortoiseSVN > ログを表示)、各チェックが (1) に対応するバグ ID を確認でき、バグ ID 番号をクリックすると、fogbugz に移動してそのバグを自動的に表示できます。実際のログ メッセージを見ている場合。かなり気の利いた!


プロジェクト間でのプロパティの移行

  1. 適切なプロパティ構成が既にあるプロジェクトを右クリックします

  2. 「TortoiseSVN > プロパティ」を選択します (手順 1 の右クリック メニューから)。

  3. 必要なプロパティをすべて強調表示します

  4. 「エクスポート」をクリック

  5. プロパティにちなんでファイルに名前を付け、簡単にアクセスできるディレクトリに配置します(私はフックファイルとともに配置しました)

プロパティダイアログを保存

  1. プロパティを設定する必要があるチェックアウトされたプロジェクトのルート ディレクトリを右クリックします。

  2. 「インポート」をクリック

  3. 上記の手順 4 でエクスポートしたファイルを選択します

  4. [開く] をクリックします。

于 2008-08-06T16:12:49.533 に答える
2

Subversion サーバーを単純にインストールできないのはなぜですか? 無料のVisualSVN Serverをダウンロードすると、ソース コード用の http サーバーを取得できるため、FogBugz スクリプトを使用して 2 つを統合できます。

私が尋ねている理由は、これまでのすべてのスクリプトとドキュメントは、サーバーがあることを前提としているためです。クライアント側のスクリプトは、FogBugz がそれらのテンプレートを用意するには新しすぎるため、ほとんど自分のデバイスに任されています。

于 2008-08-08T11:02:16.213 に答える
1

問題は、FogBugz が Web ページにリンクし、file:///etc が Web ページではないことです。2 つの方法で統合するには、Subversion リポジトリ用の Web サーバーが必要です。Apache をセットアップするか、これらのものを適切な方法でホストできる他のものをセットアップします。

于 2008-08-13T13:08:28.757 に答える
0

私はあなたをフォローしているかどうか確信が持てません。ネットワーク上または C:\ ドライブ上にリポジトリがありますか? あなたの2つの投稿によると、あなたは両方を持っているか、どちらも持っていないか、どちらかを持っているか...

ネットワーク共有からリポジトリを安全に提供する VisualSVN または Apache を取得することはできません。C:\ ドライブにリポジトリがあると最初におっしゃっていたので、それについてのアドバイスが得られます。別の設定がある場合は、その旨をお知らせください。

ローカル ハードディスクにリポジトリがある場合は、VisualSVN をインストールするか、Apache に統合します。VisualSVN は Apache と一緒に問題なく動作するため、そのルートに進む場合はインストールするだけで済みます。既存のリポジトリを VisualSVN のリポジトリ ルート ディレクトリにコピーするだけで、すぐに実行できます。

ここにある大きな投稿が不完全であるというラベルが付けられている理由はわかりません。ケースにリンクされた新しいリビジョンについて FogBugz に通知するためのフック スクリプトを設定するために必要な手順が詳しく説明されているためです。 . それは機能していませんか?

于 2008-08-08T11:34:20.157 に答える