2013-07-11 3 views
2

Я использую Phabricator и Arcanist для просмотра кода в моей команде. Команда «arc land» является удивительной, но есть один сценарий, где это не работает для нас.Фабрикатор Arcanist arc land vs arc modify

У нас есть один XML-файл, содержащий связанный список (каждый элемент относится к предыдущему элементу). Мы не вносим изменений в этот файл очень часто, но время от времени делаем это. Если два человека вносят изменения, происходит «молчащий конфликт», что означает, что связанный список не работает, потому что оба новых элемента ссылаются на один и тот же предыдущий элемент. Это не очень сложно решить. Но git не вызывает конфликта слияния.

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

Правильно ли было бы использовать изменение дуги, а затем разрешить этот конфликт вручную, за которым следует git push (как и сегодня, без каких-либо хлопот), или как вы предложите двигаться вперед с этим?

ответ

7

Некоторые возможные идеи:

  • Вы можете arc land --hold остановить до того, как git push запускается и проверить изменения, а затем запустить git push вручную.
  • Вы можете добавить локальный захват Git для проверки файла XML до того, как Git разрешит фиксацию.
  • Вы можете добавить на сервер предварительный прием для проверки файла XML до его нажатия на удаленный компьютер.
  • Вы можете переопределить поведение слияния Git с помощью директивы merge в gitattributes и заменить слияние по умолчанию на то, которое получает его право (или не слияние).
  • Вы можете попытаться заменить XML-файл данными в некотором формате, который не имеет этих нежелательных свойств слияния, поскольку эта проблема является общей.
  • Вы можете заставить слияние сбой, включив в файл какую-то строку, которая всегда конфликтует. Например, добавьте к элементу контейнера атрибут, например lastNode="whatever" (т. Е. Всегда в строке 1 или что-то еще), так что два редактирования всегда будут конфликтующими в этой строке, именовав разные последние узлы (чтобы убедиться, что это было отредактировано, вы можете проверить, что lastNode был верным во время выполнения). Если файл сгенерирован автоматически, вы можете просто поставить случайное число в комментарии по известной строке.
+0

Удивительный! «arc landhold» - это то, что сейчас имеет смысл. Ключ предварительного приема (слишком много разных локальных настроек, чтобы полагаться на крюк pre-commit), который проверяет XML-файл, является следующим логическим шагом. Это никогда не было большой проблемой, так как файл редактируется вручную, его легко понять и зафиксировать даже новыми сотрудниками без какого-либо введения. Но с землей дуги я вижу, как люди забывают об этом. –