[解決済み] CVS から Git への移行: $Id$ 相当?
質問
シンプルなソースコード管理ツールについて尋ねる多くの質問を読み、Git が妥当な選択であるように思えました。私はそれを立ち上げて実行し、今のところうまくいっています。私が CVS について気に入っている 1 つの側面は、バージョン番号の自動的な増加です。
私は、これが分散型リポジトリではあまり意味をなさないことを理解していますが、開発者としては、このようなものが欲しい/必要なのです。 その理由を説明しましょう。
私は Emacs を使用しています。定期的に、私はサードパーティ製パッケージの Lisp ソース ファイルの新しいバージョンを調べます。例えば、foo.el というファイルがあって、ヘッダーによるとバージョンは 1.3 です。
代わりに 40 文字のハッシュがいくつか表示された場合、どちらが後なのかわかりませんし、どのくらい後なのか見当もつきません。自分がどのくらい古いかを知るために、ChangeLog を手動でチェックしなければならないとしたら、それは絶対に嫌です。
開発者として、私は、私の出力を使用する人々 (そして、誰もがそうであるというのは冗談かもしれませんが、それは少し置いておきましょう) に対して、私が考えるこの礼儀を拡張したいのです。毎回、自分で数字をインクリメントしたり、タイムスタンプやそのようなものを覚えたりする必要はありません。それは本当に面倒なことで、私は経験からそれを知っています。
では、どのような選択肢があるのでしょうか?もし$Id:$に相当するものを得ることができないなら、他にどのようにして私が探しているものを提供することができるでしょうか?
私の予想では、エンドユーザーはGitをインストールしておらず、たとえインストールしていたとしても、ローカルリポジトリを持っていないでしょう(実際、そのように利用できるようにすることはないでしょう)と述べておくべきでしょう。
どのように解決するのですか?
SHAは(正規のものではありますが)バージョンの1つの表現に過ぎません。その
git describe
コマンドは他のものを提供し、非常にうまくそれを行います。
例えば、私が
git describe
を私の master ブランチで実行すると
Java memcached クライアント
のソースで、私はこれを得ます。
2.2-16-gc0cd61a
これは2つの重要なことを述べています。
- 2.2 以降、このツリーにはちょうど 16 件のコミットがあります。
- は 正確には のソースツリーを、誰のクローンでも表示することができます。
例えば、あなたがパッケージ化した
version
ファイルをソースと一緒にパッケージ化し (あるいは配布用にすべてのコンテンツを書き換えて)、その番号を表示したとします。そのパッケージ化されたバージョンが
2.2-12-g6c4ae7a
であったとします (リリースではありませんが、有効なバージョンです)。
自分がどれだけ遅れているのかが正確にわかるようになりました (4コミット)。 と で、どの 4 コミットが正確なのかを見ることができます。
# The RHS of the .. can be origin/master or empty, or whatever you want.
% git log --pretty=format:"%h %an %s" 2.2-12-g6c4ae7a..2.2-16-gc0cd61a
c0cd61a Dustin Sallings More tries to get a timeout.
8c489ff Dustin Sallings Made the timeout test run on every protocol on every bui
fb326d5 Dustin Sallings Added a test for bug 35.
fba04e9 Valeri Felberg Support passing an expiration date into CAS operations.
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
エラーが発生しました。マージされていないファイルがあるため、プリングはできません
-
Note: Git prompts このリポジトリで別の git プロセスが実行されているようです ....
-
なぜこのマージが必要なのかを説明するコミットメッセージを git に入力してください。
-
[解決済み] git checkout' を 'git co' にエイリアスする方法
-
[解決済み] 単一のgitコミットに対して設定されたユーザーを上書きする
-
[解決済み] なぜGitでコミットする前にステージが必要なのですか?
-
[解決済み] Git: リモートブランチの情報を更新する
-
[解決済み] Mac OS XでGitのインストールフォルダを探す
-
[解決済み] Git rebase が失敗しました。「次のファイルに対するローカルの変更はマージによって上書きされます。ローカルでの変更はないのですか?