• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pre-commitでリビジョン番号を反映する方法)

pre-commitでリビジョン番号を反映する方法

Tacosanの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

#1 でも言われていますが, まずは何を使って「リビジョン管理」をしているか明らかにすべきでしょう. あと, 「リビジョン管理用のテキストファイル」で何をしたいのかがわからん. 「ソースコードごとにある」わけじゃないよね. Subversion の $Revision$ とかは「当該ファイルの」最新リビジョン番号, で OK です>#1. というか, そもそも Subversion はファイル単位でリビジョンを管理しているんだから「リポジトリツリー全体の最新リビジョン」というものが意味をなさない. しいて言えばブランチしてタグを貼るくらいじゃなかったかな.

hiropon_su
質問者

補足

revision.txtの使用目的は、#1さんの補足欄に追記させていただきました。 >そもそも Subversion はファイル単位でリビジョンを管理しているんだから「リポジトリツリー全体の最新リビジョン」というものが意味をなさない. こちらに関してですが、ファイル単位で管理しているのはCVSで、Subversionはリポジトリツリー全体でリビジョンを管理しています。

関連するQ&A

  • RapidSVNの管理方法について

    RapidSVNの管理方法について ~テーマ~ コミット時の情報を、テキストファイル内に残したい。 ソースコード(例えばc拡張子ファイル)内の特定文字を検索し、 リビジョン番号やコミット日時を入力してくれるような機能はありますでしょうか? 例えば、TortoiseSVNでは、 c拡張子ファイルに以下の文字列を書いておけば、 コミット時の、「リビジョン番号」、「コミット者」、「日付」が付加されます。 /*---- $Revision$ $Author$ $Date:: $ ----*/ RapidSVNで、このような機能はありますでしょうか?

  • subversionでリポジトリのリビジョンを変更するには?

    新しいパソコンに移動するために今まで使っていたsubversionを以下のようにして移動させました。(古いレポジトリの最新リビジョンは832だったとします。) $ svnadmin dump oldrepos --revision 500:832 > dumpfile $ svnadmin load newrepos < dumpfile 問題は、この方法で移動すると、新たにリビジョン1からリビジョン番号を付け替えたものになってしまうことです。(例:旧リビション500は、新リビジョン1になってしまう) そのため、既存のworkingコピーから、subversionへ同期がとれなくなってしまいました。 できれば、既存のworkingコピーはいじらずに修正したいので、「svnadmin load」の際に、開始リビジョンを指定できたら良いと思ったのですが、そのようなオプションを見つけれませんでした。 次善策として、svn switchでリビジョンを指定すればよいかとも思ったのですが、うまくいきませんでした。 新しくチェックアウトすることをしないで修正する方法を教えてください。

  • torotoise svnでコミットに失敗する

    tortoise svnで管理しているファイルの更新を実施したので、コミットしようとすると次のようなエラーが発生しました。 Committing transaction... Error Commit failed (details follow): Error No such revision 465 Completed! このようなエラーが発生してしまいコミットできません。 なお、svn updateもできません。 このようなエラーが出た原因として少し心当たりがあるのですが、 半年くらい前に、このリポジトリを管理しているファイルサーバが故障してしまい、リポジトリごと消えてしまうトラブルが発生しました。 復旧作業で、別のPCにtortoise svn serverをインストールして、約1年くらい前にバックアップしておいたリポジトリデータを再設置しました。それ以来コミットができなくなっているようです。 リポジトリのトップディレクトリでshow logを実施すると、最終Revisionは458と出てきます。 どうぞ、ご教示の程宜しくお願い致します。

  • ffmpegの古いリビジョンを使いたい

    http://blog1.papanda.jp/2008/05/ffserveruvcusb.html にあるように、UVC対応のUSBカメラでキャプチャーしたいのと、 http://codezine.jp/article/detail/2444 のサンプルを動作させたいこともあり、 ffmpegの古いリビジョンを使いたいのですが、 svnでチェックアウトすると、libswscaleだけ外部項目ということで 最新のリビジョンがチェックアウトされます。 ソースの相性が悪く、コンパイルが通りません。 WindowsのExeだけは、アーカイブを提供しているサイトを見つけたの ですが、Linux版は見つけることができませんでした。 古いリビジョンを取得する方法もしくはアーカイブがあるサイトを ご存知の方はいらっしゃらないでしょうか。 リビジョンを特定しろと言われれば、 9133,9778,13235 です。 よろしくお願いします。

  • subversionでコミットしたらftpなどしなくても即反映したい

    最近subversionを試験的に導入してみているのですが これがあればソースコードの一括管理などが出来き 趣味ですが1人で開発するにしても世代管理などがあっていいですね! そこで最近、このように出来ないのか?と悩んでおります。 ---------------------------------------------------------------- ■subversionが導入される前 1.Windows上のローカルで開発(127.0.0.1) ↓ 2.LinuxにあるFTPサーバー(192.168.0.50)へアップロード ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) といったようなことをしていたのですが、ソースコードの世代管理と一元管理をしたいので FTPサーバーが立っているLinux(192.168.0.50)にsubversionをインストールしました。 ■subversionが導入された時(導入された今の現状) 1.Windows上のローカルで開発(127.0.0.1) ↓ 1b.Linuxにあるsubversionサーバー(192.168.0.50)へTortoiseSVNを使用してコミット ↓ 2.LinuxにあるFTPサーバー(192.168.0.50)へアップロード ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) ですが、以下のような手順にならないでしょうか? ■subversionが導入された時(こんな風にはできないの?) 1.Windows上のローカルで開発(127.0.0.1) ↓ 2.Linuxにあるsubversionサーバー(192.168.0.50)へTortoiseSVNを使用してコミット ↓ 3.Windows上のブラウザで表示の確認(http://192.168.0.50/) ---------------------------------------------------------------- つまり具体的な開発のシーンケースはこのような感じです。 Windows上で開発をしています。 そこでチェックアウトされたファイルを作ったり変更したり作成を行いました。 そして、ある程度、ローカルで色々開発をしローカルで動作確認をした後、 TortoiseSVNでコミットをします。 そのコミット先は、subversionのリポジトリ(192.168.0.50)です。 その後、WindowsでFFFTPを使用して、(192.168.0.50)のサーバーにアップロードをします。 アップロード後、Windowsでhttp://192.168.0.50/ でアクセスをして確認をします。 この状況でも満足なのですが、 もっと欲を言えば、コミットの作業をしたら、ファイルが自動でftpなどがされ 即時反映しないのかな?と思うのです。 もしもこのような動作が無理であれば リポジトリになどに対して現在の最新のリビジョンのファイルって 持たせることはできないんでしょうか? なにぶんsubversionは(私ではノウハウが弱い) まだ具体的になにが出来てなにが出来ないといったことが 理解できてないので、そういうの出来ますよ。それは無理ですよ。 といった事柄でも助かります。 ただlinuxに対してもノウハウが弱いので、 もしこのようなことが可能であるならば そのようなサイトなどを紹介しているサイトか、詳細を教えていただきたいと思います。(linuxはredhatを使用しています)

  • gitで過去のコミット履歴を非表示にしたい

    gitで過去のコミット履歴を非表示にすることは可能でしょうか? 現在プログラム編集を行っているリポジトリ内の一部ブランチだけを別のリポジトリにコピーして作業を行いたいと思い、 git remote add origin 追加したいリポジトリ このコマンドで、追加したいリポジトリに、一部ブランチをコピーしました。 新しいリポジトリ側でlogを確認してみたところ、コピーしたブランチがどのようにmasterから分岐してきたかの履歴もコピーされてきました。 基本的には、コピーしたブランチの最新の状態のみのコピーされていればよかったのですが、過去の履歴を非表示にする方法などはありますでしょうか? どうぞ、ご教示の程よろしくお願い致します。

  • subversionのpost-commitでsvn upを行うと、パーミッションエラー。

    クライアントからコミットした際に、post-commitで、svnでチェックアウトしている/var/www/sampleprojectディレクトリを"svn up"コマンドで更新をしたいと思っております。 しかし、tortoiseSVNからコミットすると、以下のエラーが表示されてしまいます。 <pre> エラー: post-commitフックが失敗しました (終了コード: 1)。出力: エラー: svn: ファイル '/var/www/sampleproject/.svn/lock' を開けません: 許可がありません </pre> post-commitの内容: <pre> #!/bin/bash REPOS="$1" REV="$2"LOG=/var/log/svn.log export LANG=ja_JP.UTF-8 echo $2 > ${LOG} whoami >> ${LOG} /usr/bin/svn up /var/www/enjoynight >> ${LOG} </pre> post-commitで出力したログを確認してみると、"svn up"を実行しているユーザーは"user1"でした。 /var/www/sampleprojectのオーナーはapacheユーザー(apache.apache)です。 ためしに、"user1"にapacheグループ権限を追加してみましたが、結果は変わりませんでした。 一日中悩んでも解決出来ませんでした。 もしよろしければ、どなたか解決策をご教授頂けないでしょうか。 サーバーOS:CentOS5.3 Subversion:1.6.2 Apache:2.2.3 passenger:2.2.3 Ruby:1.8.7 Rails:2.3.2 クライアントOS:Windows Vista tortoiseSVN:1.6.5 リポジトリへの接続方法:svn+ssh コミットユーザー:user1

  • Subversionで1台だけmacで開発

    普段Windows+Subversionでバージョン管理しています. よって,ソースコードはSJISです. ただ,PC不足のため,Macで開発しなくてはならないのですが, macの開発環境はutf8で,SJISにすることはできません. そのため,リポジトリからソースコードをutf8で取得し,macで編集後,SJISでコミットしたいのです.良い方法は御座いますでしょうか? # winは7で,MacはLionです. 以上です.どうぞよろしくお願いします.

    • 締切済み
    • Mac
  • Subversionのリポジトリでが壊れてしまったようなのですが。。

    Subversionのリポジトリでが壊れてしまったようなのですが、 どなたか修復方法を教えていただけないでしょうか? 状況は以下の通りです。 * on TortoiseSVN(Version 1.4.3.8645) ・リポジトリにimportしようとすると"Error Can't create directory 'D:\user\Creation\Program\Repository\db\transcations\19-1.txn':指定されたパスが見つかりません。"と表示される。 ・Repo-BrowserでShow logをすると"Revision file lacks trailing newline"とエラーが出る。 *on Subversion(Version 1.4.3 (r23084)) ・svn admion recoverすると正常に復旧が終了したように見える。 ・svn dumpをするとリビジョン1のダンプ中に"svnadmin: リビジョンファイルの末尾に改行がありません"とエラーが出て止まってしまう。 リポジトリの管理はTortoiseSVNで行っておりました。脈絡もなくこうなってしまったので原因が分かりません;OSはWindows XP2です。 どなたかアドバイスしていただけると幸いです。

  • gitを使っている人に質問です。

    gitでソース管理をしています。 gitではファイルをコミット、プッシュする用のリポジトリフォルダと、自分がローカルで作業する用の普通のフォルダ、2種類のフォルダで作業せよと教わったのですが、そうなんですか? 「Project」というフォルダを、リポジトリとしているとします。 そのコピーを「Project2」とし、ローカルでのファイルの修正はそこですると。 で、自分の修正が終わってコミット、プッシュする前に、 「Project」を最新にするためにそこで同期、プルを行います。 その後で「Project2」の中の自分が修正したファイルを「Project」の中に上書きし、その後にコミット、プッシュする。 そういう流れなんでしょうか? 滅茶苦茶分かり辛いのですが。 同じプロジェクトファイルが2つもあるなんて、ごちゃごちゃになりそうです。 上からはそういう風に指示されたけどそんなの面倒なので、「Project」の中のファイルをダイレクトに修正していました。 んでプッシュしようとしたら失敗しました。 別の人が、自分のと被らないファイルを修正したようでした。 ここで、自分がもしそのファイルを最新にせずにコミット、プッシュをしたら、自動でマージしてしまうか、私のローカルにあった古いファイルで上書きしてしまうのでしょうか??? 自分が修正したファイルだけをアップするんじゃないんですか? SVNやVSSならそうだったはずです。 GIT、意味不明です。 GITに反対します。 ご意見をよろしくお願いします。