Блокировка бинарных файлов с помощью системы контроля версий git - PullRequest
73 голосов
/ 23 сентября 2008

В течение полутора лет я следил за сообществом мерзавцев в надежде отойти от SVN. Одна конкретная проблема, сдерживающая меня, - невозможность заблокировать двоичные файлы. На протяжении всего прошлого года я еще не видел развития событий в этом вопросе. Я понимаю, что блокировка файлов идет вразрез с фундаментальными принципами управления распределенным исходным кодом, но я не понимаю, как компания, занимающаяся веб-разработкой, может использовать git для отслеживания изменений исходного кода и файлов изображений, когда существует вероятность конфликтов двоичных файлов. 1001 *

Для достижения эффекта блокировки должен быть идентифицирован «центральный» репозиторий. Независимо от распределенной природы git, у большинства компаний будет «центральный» репозиторий для программного проекта. Мы должны иметь возможность пометить файл как требующий блокировки из управляющего репозитория git по указанному адресу. Возможно, это затрудняется, потому что git отслеживает содержимое файла, а не файлы?

Кто-нибудь из вас имеет опыт работы с git и бинарными файлами, которые должны быть заблокированы перед изменением?

ПРИМЕЧАНИЕ. Похоже, что в новом проекте распределенного управления версиями Source Gear с открытым исходным кодом, Veracity, одной из целей является блокировка.

Ответы [ 17 ]

1 голос
/ 07 октября 2016

Это не решение, а комментарий о том, зачем нужны механизмы блокировки. Есть некоторые инструменты, используемые в некоторых областях, которые используют только двоичные форматы, которые являются критически важными, и «использовать лучшие / разные инструменты» просто не вариант. Там нет жизнеспособных альтернативных инструментов. Те, с которыми я знаком, действительно не будут претендовать на слияние, даже если вы сохранили ту же информацию в формате ASCII. Я слышал одно возражение, что вы хотите работать в автономном режиме. Конкретный инструмент, о котором я думаю, действительно не работает в автономном режиме в любом случае из-за необходимости получать лицензии, поэтому, если у меня есть данные на ноутбуке, это не значит, что я все равно могу запустить инструмент в поезде. Тем не менее, что обеспечивает git, если у меня медленное соединение, я могу получать лицензии, а также извлекать изменения, но иметь быструю локальную копию для просмотра разных версий. Это хорошая вещь, которую DVCS дает вам даже в этом случае.

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

Подход "консультативная блокировка по почте" действительно воняет. Я видел это и устал от бесконечного потока электронных писем «Я редактирую это», «Я закончил редактирование» и видел изменения, потерянные из-за этого. Конкретный случай, о котором я думаю, был случай, когда коллекция более мелких файлов ascii была бы намного приятнее, но это было бы в стороне.

1 голос
/ 23 сентября 2008

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

Кажется, я помню, как кто-то говорил (или даже реализовывал) поддержку объединения документов OpenOffice в git.

1 голос
/ 18 мая 2016

Возможно, реорганизация проекта поможет избежать блокировок, но:

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

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

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

1 голос
/ 04 декабря 2010

Просто поместите текстовый файл в cc вместе с файлом, который вы хотите заблокировать, а затем обработчик ошибок отклонит его.

0 голосов
/ 08 мая 2016

Git не предоставляет никаких команд для блокировки файлов, но я нашел способ реализовать эту функцию с помощью перехватчиков git. Вспомогательный сервер необходим для хранения информации о блокировке. Мы можем использовать ловушку перед фиксацией, чтобы проверить, заблокирован ли какой-либо из зафиксированных файлов. И если кто-либо блокирует файл, программа должна сообщить вспомогательному серверу информацию о блокировщике и заблокированном файле.

0 голосов
/ 30 декабря 2009

Я не предлагаю использовать git в моей компании для той же проблемы. Мы используем EA для всех наших проектов и Microsoft Word для документации, мы не знаем заранее, кто может редактировать тот или иной файл, поэтому эксклюзивная блокировка - наша единственная опция.

0 голосов
/ 06 января 2010

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

Если вашей организации требуется командная среда (обычно лишающая разработчиков безопасности работы), используйте svn, git не для вас. Svn обеспечивает контроль источников и связь между разработчиками по поводу блокировок.

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