Блокировка двоичных файлов с помощью системы управления версиями мерзавца

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

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

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

75
задан Vadim Kotov 13 February 2018 в 11:47
поделиться

11 ответов

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

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

1
ответ дан JesperE 24 November 2019 в 11:39
поделиться

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

4
ответ дан Mario 24 November 2019 в 11:39
поделиться

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

5
ответ дан Khoth 24 November 2019 в 11:39
поделиться

Когда я использовал Подрывную деятельность, я неукоснительно установил svn:needs-lock свойство на всем двоичном файле и даже трудных к редактированию текстовых файлах. Я никогда на самом деле не испытывал конфликтов.

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

Другая вещь, которую я сделал, должен заменить много двоичных форматов форматами обычного текста. Я использую reStructuredText или LaΤ Ε Χ вместо Word, CSV вместо Excel, ASCII-ТВОРЧЕСТВА вместо Visio, YAML вместо баз данных, SVG вместо OO Тянут, abc вместо MIDI, и так далее.

6
ответ дан Jörg W Mittag 24 November 2019 в 11:39
поделиться

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

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

способ, которым мерзавец "предназначается", чтобы использоваться, каждый разработчик, публикует их собственный общедоступный репозиторий, от которого они запрашивают других вытянуть. Я нашел, что пользователи Подрывной деятельности испытывают затруднения из-за этого. Так, вместо этого, мы продвигаем для ветвления деревьев в центральном репозитории с каждым пользователем, имеющим их собственный отросток дерева. Например, иерархия как это могла бы работать:

users/a/feature1
users/a/feature2
users/b/feature3
teams/d/featurey

Не стесняются использовать Вашу собственную структуру. Обратите внимание, что я также показываю ответвления темы, другую общую идиому мерзавца.

Тогда в локальном repo для пользователя a:

feature1
feature2

И получить его к центральному серверу (источник):

git push origin feature1:users/a/feature1

(это может, вероятно, быть упрощено с изменениями конфигурации)

Так или иначе, как только feature1 рассматривается, кто бы ни ответственен (в нашем случае, это - разработчик функции, у Вас мог быть отдельный пользователь, ответственный за слияния ведущему устройству), делает следующее:

git checkout master
git pull
git merge users/name/feature1
git push

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

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

можно также программно осуществить аспекты этого мерзавца использования рычаги, но снова, я еще не работал с ними, так не может говорить о них.

8
ответ дан Michael Johnson 24 November 2019 в 11:39
поделиться

В ответ на дополнительное беспокойство Mario с изменениями, происходящими в нескольких местах на двоичных файлах. Таким образом, сценарием является Alice, и Bob оба вносят изменения в тот же двоичный ресурс одновременно. У каждого из них есть их собственный локальный repo, клонированный от одного центрального удаленного.

Это - действительно потенциальная проблема. Таким образом, Alice приходит первым и продвигает к центральному alice/update ответвление. Обычно, когда это происходит, Alice сделала бы объявление, что это должно быть рассмотрено. Bob видит, что и рассматривает его. Он может или (1) включить те, изменяет себя в его версию (переходящий от alice/update и вносящий его изменения в тот) или (2) опубликовать свои собственные изменения в bob/update. Снова, он делает объявление.

Теперь, если нажатия Alice к master вместо этого, у Bob есть дилемма, когда он вытягивает master и пытается объединиться в свое локальное ответвление. Его конфликты с Alice. Но снова, та же процедура может применяться, только на различных ответвлениях. И даже если Bob игнорирует все предупреждения и фиксации по Alice, всегда возможно вытащить фиксацию Alice для фиксации вещей. Это становится просто проблемой связи.

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

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

10
ответ дан Michael Johnson 24 November 2019 в 11:39
поделиться

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

  • Имеют способ отметить файл как "блокировку потребностей" (как свойство "svn:needs-блокировки").
  • На контроле, мерзавец отметил бы такой файл как только для чтения.
  • А новая команда git-lock связалась бы с центральным сервером блокировки, работающим где-нибудь для выяснения у разрешения заблокировать.
  • , Если сервер блокировки дает разрешение, отметьте чтение-запись файла.
  • git-add сообщил бы серверу блокировки хеша содержания заблокированного файла.
  • сервер блокировки наблюдал бы за тем довольным хеш для появления в фиксации на главном репозитории.
  • , Когда хеш появится, выпустите блокировку.

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

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

10
ответ дан Greg Hewgill 24 November 2019 в 11:39
поделиться

В Subversion есть блокировки, и они не только рекомендательные. Они могут быть принудительно применены с помощью атрибута svn: needs-lock (но также могут быть намеренно нарушены при необходимости). Это правильное решение для управления файлами, не подлежащими слиянию. Компания, в которой я работаю, хранит практически все, что есть в Subversion, и использует svn: needs-lock для всех файлов, не подлежащих слиянию.

Я не согласен с тем, что «блокировки - это всего лишь метод связи». Это гораздо более эффективный метод, чем push-уведомления, такие как телефон или электронная почта. Блокировки Subversion самодокументируются (у кого есть блокировка). С другой стороны, если вам нужно общаться с помощью других традиционных каналов push-уведомлений, таких как электронная почта, кому вы отправляете уведомление? Вы не знаете заранее, кто может захотеть отредактировать файл, особенно в проектах с открытым исходным кодом, если у вас нет полного списка всей вашей команды разработчиков. Таким образом, эти традиционные методы связи не так эффективны.

Сервер центрального замка, хотя и противоречит принципам DVCS, является единственным возможным методом для файлов, не подлежащих объединению. Пока DVCS не имеет функции центрального замка, я думаю, что она сохранит компанию, над которой я работаю, использующей Subversion.

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

Вот интересное чтение по теме.

74
ответ дан 24 November 2019 в 11:39
поделиться

А как насчет файлов cad? Если файлы не заблокированы, чтобы быть доступными только для чтения, большинство программ CAD просто откроют их для изменения произвольных битов, которые будут отображаться как новый файл любым vcs. Так что, на мой взгляд, блокировка - идеальное средство для сообщения о своем намерении изменить какой-либо частичный файл. Кроме того, это в первую очередь мешает некоторому Программному обеспечению получить доступ на запись. Это позволяет обновлять локальные файлы без необходимости закрывать программное обеспечение или, по крайней мере, все файлы полностью.

1
ответ дан 24 November 2019 в 11:39
поделиться

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

0
ответ дан 24 November 2019 в 11:39
поделиться

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

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

0
ответ дан 24 November 2019 в 11:39
поделиться
Другие вопросы по тегам:

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