4

ソースを git-hub サーバーにチェックアウトするたびに、ソース コードのリビジョン キーワード (@version、@date など) を更新する必要があります。

あなたが知っているかもしれないように:

Git でのこれに関する主な問題は、Git が最初にファイルのチェックサムを計算するため、コミット後にコミットに関する情報を使用してファイルを変更できないことです。

基本的に私が達成したいのは、私のソースコードが以下のようになることです:

 * Git revision information:
 * 
 * @version $Revision: 1e7f611039399b32e9000ec454609a0641dde368 $
 * @author  $Author: Eugen Mihailescu <eugenmihailescux@gmail.com> $
 * @date    $Date:   Thu May 3 01:17:45 2012 +0200 $
 * 
 * $Id:  | Thu May 3 01:17:45 2012 +0200 | Eugen Mihailescu  $

ここここで、Git でこれを実現する方法の完全な説明を見つけることができます。

コミット/チェックアウト時にファイルで置換を行うための独自のフィルターを作成できることがわかりました。これらは「クリーン」フィルターと「スマッジ」フィルターです。.gitattributes ファイルでは、特定のパスにフィルターを設定し、ファイルがチェックアウトされる直前 (「smudge」、図 7-2 を参照) およびコミットされる直前にファイルを処理するスクリプトを設定できます。

だから私はgitコマンドでそれを行う方法を知っています。私はテストしました、それはうまくいきます!私の本当の問題は、Eclipse IDE を使用して同じことを達成したいということです。Eclipse には、Git バージョン管理システムの純粋な Java 実装である JGit に基づく Eclipse Team プロバイダーである Eclipse Git があります。

Eclipse EGit には「git checkout」というコマンドはありませんが、ハード リセット (プロジェクトを右クリックし、[チーム] -> [リセット] -> [ハード] を選択) によって実現できます。残念ながら、これはクリーン/スマッジ フィルターを実行しません。実際には、キーワード展開なしで git ハブからソースのプレーン コピーを取得します。

ここで質問するので、全体のストーリーを詳細に説明したことを願っています。

  • EGitを使用してEclipseでこれは可能ですか?
4

1 に答える 1

1

このコミット (2010 年 8 月)のコメント

WorkingTreeIterator 中に CRLF から LF への自動変換を実行する

WorkingTreeIteratorオプションで、テキスト ファイルの CRLF から LF への変換を実行するようになりました。
に基づくこの機能の有効化 (または無効化)gitattributesをサポートするため、また、より一般的な汚れ/クリーン フィルター システムをサポートするために、基本的なフレームワークがそのまま残されています。JGit ではまだサポートされていないため、これは実装されていませんが、
、およびメソッドは、将来それをプラグインする適切な場所を提供します。gitattributemightNeedCleaning()isBinary()filterClean()

が最新の JGit リリースgitattributeで完全にサポートされているとは思わず、 の最新リビジョンにはまだ空の機能があります。WorkingTreeIteratorfilterClean()

そのため、JGit だけを使用しても、「コンテンツのフィルター」ドライバーをトリガーするには不十分な場合があります。

于 2012-05-03T07:01:27.660 に答える