2011-08-15 5 views
1

Gitで珍しいこと(?)をしようとしています---私のマルチメディアファイルと写真とGitでいくつかのpdfファイルを保存しています。私は、各ファイルにいくつかのメタデータを残したいと思います(写真付き:私はそれに何らかのキャプションを残したい、pdfファイルでは:後で検索しやすくするためのファイルに関する情報)。 svnでは、svnプロパティを使用してファイルに関するメタデータを格納できます(私は思っています)。 Gitでこれをどうやってやるの?どのを簡単に見つけることができなかった方法! git notesは有望ですが、注釈はオブジェクト(コミット)とのみ関連しています。私は個々のファイルでノートをしたい。Gitのファイルでメモを保存する方法

更新:私はではありませんファイル/パスのメタデータのための別のファイルを保存したいと思います! :-)私はファイル/パスを使って何とか情報を保持したい。 svnプロパティ(svn propset caption "In the Golden Gate" foo.jpg)と似ています。より正確に言えば、ファイルを移動するとき(git mv path1/file path2/file)、メタデータファイルを最新の状態に保つことを心配する必要はありません。メタデータはファイルと共に移動する必要があります。

答えて

1

さまざまなファイルタイプのメタデータを編集できるGit以外のソリューションが必要なようです。どちらかというと、メタデータを必要とするメディアごとにテキストファイルを作成できますが、それは実用的ではありません。

+0

質問が間違っていますか? gitでブラウズしている間、ファイルの簡単な説明をしたいのですか? –

+0

Cameron Malek:質問を更新しました。迅速な対応に感謝します。 –

1

別々のファイルに保存し、それらを修正するためにpre-commitフックを実行してください。あなたはgit diff --cached -M --summary

[flames]$ git diff --cached -M --summary 
rename a => b (100%) 

を使用して(インデックス/キャッシュで)名前を変更したファイルを検出することができます

は、空想のstuffsを行う(私はPerlを使用することをお勧めしますが、私はデモのためにここにsedを使用)

[flames]$ git diff --cached -M --summary | \ 
> grep rename | \ 
> sed 's/^ rename \(.*\) => \(.*\) (.*/s\/^\1$\/\2\//' 
s/^a$/b/ 

ノートファイルにこの正規表現を使用してください(テストされていません):

#!/bin/sh 
REGEX="`git diff --cached -M --summary | \ 
    grep rename | \ 
    sed 's/^ rename \(.*\) => \(.*\) (.*/s\/^\1$\/\2\//' 
    `" 
sed -i -e "$REGEX" note-file 
git add note-file 
exit 0 

構文解析が容易な形式は--rawです。

[flames]$ git diff --cached -M --raw 
:100644 100644 b53a58b... 3f063ab... M wxyz 
:100644 100644 e69de29... e69de29... R100  a  b 

5列目のRを検索するだけです。詳細はman diffcore(7)を参照してください。これは読者のための練習としての休暇です。

+0

J-16 SDiZ:私はこれに慣れていません...これについてどうやって行くかについてのいくつかの指針を教えてください。ありがとう。 –

+0

回答を編集しました –

関連する問題