Управление большими двоичными файлами с помощью Git

ОК, мы это нашли. Магическое заклинание:

Application.EnableVisualStyles();

Мы пропустили эту строку кода, чтобы проверить нашу форму. Если вы не вызываете этот метод, прежде чем создавать свою форму в своем списке, представление TILE будет нарисовано как LARGEICON.

Кажется вполне логичным ... :-(

http://blogs.msdn.com/rprabhu/archive/2003/09/28/56540.aspx

Q Что действительно делает Application.EnableVisualStyles?

Windows XP поставляется с двумя версиями библиотеки Common Controls (comctl32.dll) - версий 5.8 и 6.0. V5.8 отображает элементы управления в стиле «классика», которые вы получаете в Windows NT / 2000 и Windows 9x. используя внешний вид визуальных стилей XP. Поскольку большинство элементов управления Windows Forms основаны на comctl32, то, как они отображаются, зависит от того, какая версия comctl32 используется для рендеринга. По умолчанию v5.8 используется для визуализации клиентской области приложение и v6.0 используются для рендеринга неклиентской области. Именно поэтому вы видите, что строка заголовка и границы окна автоматически отображают «тематические», в то время как элементы управления (такие как Button, TextBox, ListView, ComboBox и т. д.) имеют классический туалет k по умолчанию.

В версии 1.0 Framework способ получить визуальные стили в приложении Windows Forms состоял в том, чтобы отправить файл манифеста с приложением, в котором есть информация, указывающая, что v6.0 comctl32 должен для рендеринга. Хотя это прекрасно работает, многие разработчики считают, что это громоздко для автора, поддерживать и развертывать файлы манифеста. Они почувствовали необходимость уметь делать это программно. Теперь Platform SDK предоставляет API для этого. В принципе, вам нужно создать и активировать контекст активации, в котором в качестве файла манифеста имеется почти такая же информация о перенаправлении DLL. API-интерфейс Activation Context можно использовать, чтобы сделать это подходящим для вашего приложения способом.

Если вы посмотрите на эти API, вы, вероятно, заметите, что они не очень удобны в использовании. В то время как продвинутые разработчики могут обойтись с контекстами активации, это, вероятно, не тот разработчик, который хочет, чтобы какой-то «быстрый и грязный» код получал визуальные стили. Поэтому команда Windows Forms решила обернуть эти API и разоблачить простой метод, который могли бы назвать разработчики, которые изолировали бы их от этих сложностей. Таким образом, по сути, когда вы вызываете Application.EnableVisualStyles, мы настраиваем контекст активации вокруг цикла сообщений приложения, так что вызовы функций comctl32 могут быть правильно перенаправлены на comctl32 v6.0. Таким образом, вам не нужно включать манифест с вашим приложением.

514
задан Peter Mortensen 31 December 2017 в 13:32
поделиться

3 ответа

Если программа не будет работать без файлов, кажется, что разделение их в отдельный repo является плохой идеей. У нас есть большие наборы тестов, что мы врываемся в отдельный repo, но это - действительно "вспомогательные" файлы.

Однако Вы можете управлять файлами в отдельном repo и затем использовать git-submodule для получения по запросу их в проект нормальным способом. Так, у Вас все еще была бы полная история всего Вашего источника, но насколько я понимаю у Вас только будет один соответствующий пересмотр Вашего подмодуля изображений. git-submodule средство должно помочь Вам сохранить правильную версию кода в соответствии с правильной версией изображений.

Вот польза введение в подмодули из Книги Мерзавца.

177
ответ дан Charles Beattie 31 December 2017 в 23:32
поделиться
  • 1
    Да это будет - you' d должен скорректировать названия значений, на которые Вы проверяли в Request.Form набор в зависимости от того, что отправлялось на Вас. – ipr101 28 September 2011 в 19:12

По-моему, если Вы, вероятно, будете часто изменять те большие файлы, или если Вы намереваетесь сделать много из git clone или git checkout, затем необходимо серьезно рассмотреть использование другого репозитория Мерзавца (или возможно другой способ получить доступ к тем файлам).

, Но если Вы работаете как, мы делаем, и если Ваши двоичные файлы будут не часто изменяться, то первый клон/контроль будет длинен, но после этого это должно быть с такой скоростью, как Вы хотите (рассмотрение, что Ваши пользователи продолжают использовать первый клонированный репозиторий, который они имели).

12
ответ дан Peter Mortensen 31 December 2017 в 23:32
поделиться

Я использовал бы подмодули (в качестве Pat Notz) или два отличных репозитория. Если бы Вы изменяете свои двоичные файлы слишком часто, то я попытался бы минимизировать влияние огромного репозитория, чистя историю:

у меня была очень похожая проблема несколько месяцев назад: ~21  ГБ файлов MP3, несекретных (плохие имена, плохой id3, не знают, нравится ли мне этот файл MP3 или не...), и копируемый на трех компьютерах.

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

В конце, я имел только ~6  ГБ файлов MP3 и ~83  ГБ в .git каталоге. Я использовал git-write-tree и git-commit-tree для создания новой фиксации, без предков фиксации, и запустил новое ответвление, указывающее на ту фиксацию. "Журнал мерзавца" для того ответвления только показал одну фиксацию.

Затем я удалил старое ответвление, сохраненное только новое ответвление, удалил повторно пороть и выполнил "чернослив мерзавца": после этого мои .git папки взвесили только ~6  ГБ...

Вы могли "произвести чистку" огромного репозитория время от времени таким же образом: Ваш "клон мерзавца" будет быстрее.

25
ответ дан Peter Mortensen 31 December 2017 в 23:32
поделиться
Другие вопросы по тегам:

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