
ソースコードにリビジョン管理用のテキストファイル(revision.txtとします)を用意して、コミットする度に、リポジトリの最新リビジョンと同期させたいと考えています。
pre-commitでコミット直前に作業コピーのrevision.txtの内容を書き換える方法で一応実現できたのですが、作業コピー上のrevision.txtのパスを指定する必要があり、メンバー毎に作業コピーのパスが違う環境では使いづらいものになってしまいました。
コミット直前にリポジトリの中身を直接書き換えられることができれば、クライアント側の環境に依存しない形を実現できると考えているのですが、このようなことを実現する方法はあるのでしょうか。
逆にソースコードに最新のリビジョン番号を埋め込みたい場合、別のよい方法があれば教えていただきたいです。
No.3ベストアンサー
- 回答日時:
>使用しているバージョン管理システムはSubversion1.6.11です。
RHEL5.x系…でしょうかね?
サーバはLinuxってことでいいのでしょうか?
Windowsだと下記の処理はちょっと面倒そうですから。
# Perlなり入れてあればフック用のバッチから呼び出すことで同等なコトは可能でしょうけど……。
クライアントからの1回のコミットでリビジョンが2つ上がる。
ということを許容できるのであれば、
post-commitフック辺りでrevision.txtを書き換えてコミットする。
とかいう方法も取れるかと。
post-commitでサーバ上の作業ディレクトリに一端チェックアウトしrevision.txtのみ書き換えてコミットするようなスクリプトを実行する。
post-commitではコミットされたファイルがrevision.txtだけの場合は上記のスクリプトを実行しない。
とか。
ただ、この場合…クライアントではコミットした後、更新を実施しないと面倒なことになる恐れが…。
# まぁ、他人がコミットしているのと同じことなので…運用でカバーしていただくしかないかも知れませんけど……。
コミットする人にrevision.txtの更新を強制する。とか…
pre-commitでrevision.txtが正しく更新されているかチェックするスクリプトを実行する。
更新されていない場合は、エラーメッセージを表示(pre-commitで標準出力に出力する)してスクリプトの戻り値でコミットを中断できるハズです。
# エラーメッセージの文字コードって…クライアントとかに依存するんでしょ~かね?
# どっかのリポジトリにアクセスした時にTortoiseSVNに文字化けしたエラーメッセージが表示されたことがあったような…。
ブランチやタグの作成でコミットされた場合…は除外する必要があったりしますから、どちらもその辺りは手間…かも知れませんね。
# svnlook changed辺りで…一応判定は可能かと思いますが。
運用的にアレですが、私なら後者の方法を採りますかね…。
『ただのインクリメント作業を強制させる。』というのがほんとにアレですが…。
pre-commitで…クライアントからのコミット対象外ファイルに手を出せる(リポジトリ内のファイルを書き換えして一緒にコミットできる)のであれば、今回の要件にはベストなんでしょうけど…。
revision.txtがリポジトリ内でどんな場所にあるのか不明ですし、リポジトリレイアウトについても不明です。
revision.txtの内容も不明…という状況ですので具体的なスクリプトについては書けませんが……。
フックスクリプト、実際に使ったことあるのはpre-revprop-changeくらいですしねぇ…。
ログメッセージの編集を許可する…という為だけに。
No.2
- 回答日時:
#1 でも言われていますが, まずは何を使って「リビジョン管理」をしているか明らかにすべきでしょう. あと, 「リビジョン管理用のテキストファイル」で何をしたいのかがわからん. 「ソースコードごとにある」わけじゃないよね.
Subversion の $Revision$ とかは「当該ファイルの」最新リビジョン番号, で OK です>#1. というか, そもそも Subversion はファイル単位でリビジョンを管理しているんだから「リポジトリツリー全体の最新リビジョン」というものが意味をなさない. しいて言えばブランチしてタグを貼るくらいじゃなかったかな.
この回答への補足
revision.txtの使用目的は、#1さんの補足欄に追記させていただきました。
>そもそも Subversion はファイル単位でリビジョンを管理しているんだから「リポジトリツリー全体の最新リビジョン」というものが意味をなさない.
こちらに関してですが、ファイル単位で管理しているのはCVSで、Subversionはリポジトリツリー全体でリビジョンを管理しています。
No.1
- 回答日時:
クライアントはなんでしょう???
TortoiseSVNなら「SubWCRev」でのキーワード置換とかありますが……。
>逆にソースコードに最新のリビジョン番号を埋め込みたい場合、別のよい方法があれば教えていただきたいです。
$Revision$などを埋め込んでおいて、コミット時に反映させる。
なんて手段もあるにはありますが…希望の動作とは少し違いますかねぇ。
# コミットしたファイルの最新リビジョン…だったハズ。
http://wiki.bit-hive.com/tomizoo/pg/Subversion%2 …
この回答への補足
すみません、記述がもれていました。使用しているバージョン管理システムはSubversion1.6.11です。
revision.txtの使用目的は、アプリケーションデプロイ時にアプリケーションのバージョンを自動更新したいためです。
現在はエクスポート時に、revision.txt生成スクリプトを介することで実現しているのですが、この方法ですと、スクリプトを介すことを知らない利用者が、チェックアウトした際に、revision.txtが生成されないという問題があるので、コミット時に都度更新できないかと考えています。
クライアントはTortoiseSVN、Subversiveなどが混在しているので、TortoiseSVN固有の機能は使いたくない、といったところです。
$Revison$ですと、そのファイルコミット時のリビジョンになってしまうので、ご指摘の通り、目的の動作とは少し違います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Subversionのリビジョン番号一...
-
TortoiseSVNでリポジトリURLの...
-
svnでファイル移動すると履歴が...
-
tortoiseSVNについての質問です。
-
[SVN]Subversionリポジトリの容...
-
TortoiseSVNにおける削除ファイ...
-
Tortoise SVNでのファイルをア...
-
SVNへ登録した際の「日時」につ...
-
ナレッジDB
-
subversionの質問です。
-
「.svn」の隠しフォルダが勝手...
-
Subversionで日本語ファイル名...
-
subversionでログを表示しよう...
-
Subversionでチェックアウトが...
-
WEB制作におけるバージョン管理...
-
RapidSVNの管理方法について
-
SVN 削除してしまったフォルダ...
-
Excel: ファイル名になぜ、[...
-
彼女の過去の恋愛に嫉妬してし...
-
CSVファイルの特定行の削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
svnでファイル移動すると履歴が...
-
[SVN]Subversionリポジトリの容...
-
TortoiseSVNでリポジトリURLの...
-
Subversionで日本語ファイル名...
-
TortoiseSVNにおける削除ファイ...
-
subversionでログを表示しよう...
-
Tortoise SVNでのファイルをア...
-
svnadmin loadをするとエラーする
-
Subversionのチェックアウトが...
-
Subversionのリビジョン番号一...
-
TortoiseSVN1.6.7でのhttps接続
-
SVNへ登録した際の「日時」につ...
-
SVNのアンロック
-
Subversionでチェックアウトが...
-
".svn-base"という拡張子の追加...
-
SVN 削除してしまったフォルダ...
-
リビジョン指定でのSVNログ取得...
-
svnリポジトリ内の一部のフォル...
-
「.svn」の隠しフォルダが勝手...
-
pre-commitでリビジョン番号を...
おすすめ情報