Как вести заметки с файлами в Git - PullRequest
1 голос
/ 15 августа 2011

Я пытаюсь сделать что-то необычное (?) С Git - храню мои мультимедийные файлы и фотографии и некоторые PDF-файлы с помощью Git.Я хочу сохранить некоторые метаданные с каждым файлом (например, с фотографией: я хочу сохранить некоторую подпись с ним; с файлом PDF: некоторая информация о том, что файл предназначен для облегчения поиска в дальнейшем).В SVN вы можете использовать свойства SVN для хранения метаданных о файле (я думаю).Как мне сделать то же самое в Git?Не удалось найти ни одного простого пути!git notes выглядело многообещающе, но связывает только заметки с объектами (коммиты).Я хочу заметки с отдельными файлами.

Обновление: я не хочу сохранить отдельный файл для метаданных файлов / путей!:-) Я хочу как-то сохранить информацию в файле / пути.Как свойства SVN (svn propset caption "In the Golden Gate" foo.jpg).Точнее говоря, когда я перемещаю файлы (git mv path1/file path2/file), мне не нужно беспокоиться о том, чтобы поддерживать файл метаданных в актуальном состоянии ... метаданные должны перемещаться вместе с файлом.

Ответы [ 3 ]

1 голос
/ 15 августа 2011

Просто храните в отдельных файлах и выполните pre-commit ловушку, чтобы исправить их.

Вы можете обнаружить переименованный файл (в индексе / кэше), используя git diff --cached -M --summary

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

затем делайте модные вещи (я предлагаю использовать 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

Просто найдите R в 5-м столбце.человек diffcore (7) для деталей.Это упражнение для читателя.

1 голос
/ 15 августа 2011

Похоже, вам нужно решение вне Git, которое может обрабатывать метаданные различных типов файлов.Либо так, либо вы можете создать текстовый файл для каждого элемента мультимедиа, для которого вы хотите метаданные, но это звучит непрактично.

0 голосов
/ 15 августа 2011

Посмотрите на гибак: https://github.com/mfp/gibak

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...