Мерзавец вложил подмодули и зависимости

Проверьте этот экстрактор метаданных . Это записано в Java, но было также портировано к C#. я использовал версию Java для записи маленькой утилиты для переименования моих jpeg файлов на основе даты и образцовых тегов. Очень простой в использовании.

РЕДАКТИРОВАНИЕ экстрактор метаданных .NET поддержек также. Это - очень быстрая и простая библиотека для доступа к метаданным из изображений и видео.

Это полностью поддерживает Exif, а также IPTC, XMP и много других типов метаданных от типов файлов включая JPEG, PNG, GIF, PNG, ICO, WebP, PSD...

var directories = ImageMetadataReader.ReadMetadata(imagePath);

// print out all metadata
foreach (var directory in directories)
foreach (var tag in directory.Tags)
    Console.WriteLine($"{directory.Name} - {tag.Name} = {tag.Description}");

// access the date time
var subIfdDirectory = directories.OfType().FirstOrDefault();
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTime);

Это доступно через NuGet и код GitHub.

48
задан Mauricio Scheffer 20 October 2009 в 20:27
поделиться

3 ответа

Вы только что обнаружили отсутствие переопределенных зависимостей с подмодулями Git:

Если Super зависит от Core, его зависимость от Core должна «переопределять» зависимости A и B от Core.

Единственный способ подражать этому - создать свой супер-проект, как вы это сделали,
и удалить подмодуль Core из A и B.
(это означает, что Super теперь зависит от A 'и B', A 'является A без Core, B' является B без Core)

15
ответ дан 26 November 2019 в 19:05
поделиться

Репозитории git должны быть достаточно атомарными, чтобы каждый репозиторий был автономным объектом для определенной цели. Какова цель суперпроекта, кроме объединения проектов А и Б? Если нет ничего уникального (то есть файлов, которых нет ни в A, ни в B, ни в Core), то это довольно избыточно.

РЕДАКТИРОВАТЬ: Поскольку подмодули git особенно болезненны в одном месте, где я работал, мы настраиваем нашу собственную зависимость система, которая отслеживает зависимые репозитории через текстовые файлы. Мы настроили его так, чтобы он всегда отслеживал заголовок ветки, а не конкретную фиксацию.

Мы смогли настроить все наши проекты, как если бы они были частью супер-проекта, вот так:

Super
|-A
|-B
|-Core

Проекты будут ссылаться друг на друга, используя относительные пути, например ../ A / include.h . Проверка репо A не будет работать,

7
ответ дан 26 November 2019 в 19:05
поделиться

Я бы не стал пытаться сопоставить дерево зависимостей с подмодулями - по причинам, которые вы уже выяснили.

Подмодули отслеживают данную ревизию данной ветви, поэтому они полезны для создания моментального снимка согласованного набора модулей.

Итак, если ваш проект требует, чтобы определенный набор версий различных модулей отслеживался как одно целое, вы можете сгруппировать их вместе как подмодули. Затем вы можете пометить разные наборы модулей в разных версиях, чтобы получить историю проекта, где каждый тег показывает, какие версии каких модулей были совместимы в определенный момент времени.

 tags/
     release1/ 
           |-> A@1.0
           |-> B@1.1
           |-> C@1.2
     release2/
           |-> A@2.0
           |-> B@1.3
           |-> C@1.5

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

0
ответ дан 26 November 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: