Действительно ли возможно исключить некоторые файлы из регистрации (TFS)?

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

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

5
задан Daniel Mann 15 February 2016 в 04:31
поделиться

2 ответа

Для поддержки сценариев, которые вы иллюстрируете в своем вопросе, достаточно одного DockPanel , поэтому все, что вам нужно написать, это обработчики для OnDragEnter, OnDragOver, OnDragLeave и OnDragDrop. Я обычно использую один обработчик событий, потому что обработка этих четырех событий так похожа:

OnDragEnter & OnDragOver:

  1. Вычислите, какое ребро и какое расположение в DockPanel будет удалено элемент
  2. Удалите любой существующий украшатель
  3. Добавьте прямоугольный украшатель, чтобы показать расположение перетаскивания

OnDragLeave:

  1. Удалить любой существующий adorner

OnDragDrop:

  1. Удалить любой существующий adorner
  2. Вычислить, какое ребро и какое расположение в DockPanel будет удалено предметом
  3. Удалить перетаскиваемый предмет из текущей панели, установить на ней DockPanel.Dock и добавить его в новую панель

Естественно, вам также придется выполнять перетаскивание по заголовку

Двумя сложностями здесь являются:

  • Решение, является ли DockPanel достаточным для ваших потребностей или вам понадобится более сложная структура данных
  • Убедитесь, что геометрические расчеты учитывают все возможные конфигурации окон

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

-121--3095691-

Ближайший пример, который я знаю о том, что кто-либо делает что-либо удаленно, как вы спрашиваете, это проект Mongoose . В списке рассылки Mongoose растет количество дискуссий о постоянных соединениях для HTTP - но это, очевидно, не совсем веб-сокеты. Я бы надеялся, что кто-то тоже сможет добавить к нему Web Sockets.

-121--2501924-

Основные параметры:

  • Если в первую очередь используется интеграция Visual Studio, достаточно просто пометить эти файлы как «Исключить из системы управления версиями» в решениях/проектах.
  • Администратор может заблокировать файл. TFS поддерживает два типа блокировок в зависимости от того, где в процессе вы хотите, чтобы разработчики получили шлепок с предупреждением: http://blogs.msdn.com/phkelley/archive/2008/11/12/everything-you-ever-wanted-to-know-about-locks.aspx

Есть несколько других способов, но я думаю, что это четкие фавориты.

5
ответ дан 14 December 2019 в 19:12
поделиться

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

Очевидно, что Chrome не остановится на исключении, если он находится внутри блока try-catch. Он приостанавливается только на необдуманных исключениях. Я не знаю, путь это изменить.

Если нужно знать, в какой строке произошло исключение (тогда можно установить точку останова, если исключение воспроизводимо), объект Error , заданный блоку catch, имеет свойство stack , показывающее, где произошло исключение.

-121--574158-

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

-121--1221705-

Также можно использовать политику возврата, блокирующую определенные имена файлов.

Я думаю, что это было бы менее предпочтительно, чем просто пометить файл как «Исключенный», хотя.

0
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

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