Я постараюсь дать вам несколько советов, подкрепленных моим личным опытом.
Один из моих товарищей по команде, хотя и опытный, не очень понимает SVN. Естественно, пустые области на его ментальной карте, изображающие океаны SVN, заставляют его принять довольно странные модели использования.
Например, он объявил политику «1 фиксация SVN в день на разработчика», потому что в противном случае «серверу скоро не хватит места на диске». Когда я объяснил ему, что SVN коммиты являются дельтами, а не полными копиями, он ответил с сомнением, и даже сегодня я не совсем уверен, понимает ли он, что это значит.
Даже если бы было много места на диске, вы всегда могли зафиксировать много файлов одновременно, поэтому я думаю, что он предлагает неправильное решение. Кроме того, можно тратить много места, проверяя большие двоичные файлы, поскольку SVN не хранит дельты для двоичных файлов. Одна регистрация в день также плоха, потому что она заставляет вас вносить изменения, которые не принадлежат друг другу, например, если вы исправляете более одной ошибки в день.
Решение, которое мы приняли в нашей компании, состоит в том, что существует фильтр, отклоняющий любой коммит, содержащий двоичные файлы. Мы можем форсировать фиксацию, используя специальное ключевое слово в комментарии о регистрации (мы должны показать SVN, что знаем, что делаем). Раз в год или два менеджер проекта архивирует старые ветки и удаляет их из хранилища. С этой стратегией у нас нет проблем с пространством, о которых я знаю (наш репозиторий поддерживает несколько различных проектов и имеет более 100000 ревизий).
Подводя итог, вы могли бы сказать ему, что вы согласны с ним, что дисковое пространство является важной проблемой, но, с другой стороны, указать
- важность регистрации, связанной с особенностями, а не одной монолитной ежедневной регистрации;
- тот факт, что проверяя один большой двоичный файл в день, можно было заполнить диск в любом случае.
Затем вы могли бы предложить провести встречу (возможно, с другими разработчиками или системными администраторами), чтобы обсудить стратегии контроля за использованием дискового пространства (например, фильтры двоичных файлов, регулярное резервное копирование и очистка старых неиспользуемых веток).
У нас также был горячий спор о том, включать ли конфигурацию Eclipse .project в SVN. Мой товарищ по команде настоял, что мы должны, хотя это вызвало многочисленные бессмысленные конфликты. Я был против сохранения отдельных файлов конфигурации разработчика в SVN. Наконец, оказалось, что у моего товарища по команде была практика повторной проверки всего дерева исходных текстов после каждого коммита, чтобы просто убедиться, что «код, зафиксированный в репозитории, работает». По этой причине он был настолько непреклонен в сохранении конфигурации проекта в SVN - так что было бы легко повторно импортировать проект. Когда я объяснил, что коммит синхронизирует рабочую копию с удаленным побайтовым удалением, что делает ненужным повторное извлечение, мой товарищ по команде снова ответил с сомнением и в конечном итоге отменил всю проблему как незначительную.
По моему мнению, наша команда тратит время, решая конфликты SVN в файлах конфигурации проекта, которые содержат только специфичные для разработчика настройки, которые вообще не нужно передавать в SCM. Весь этот беспорядок, потому что кто-то приспособил процесс вокруг неправильных предположений.
Вы используете сервер сборки? У нас есть сервер сборки, который проверяет весь проект и компилирует его каждую ночь. На следующее утро у тестировщиков есть готовый к тестированию установщик продукта (если основная сборка работает правильно), и у нас (разработчиков) есть отчет о сборке со всеми предупреждениями (и ошибками, если они есть). Конечно, вам нужно настроить стандартные файлы конфигурации для сервера сборки и зарегистрировать их. Каждый разработчик может затем проверить их вместе с остальной частью проекта, но им не разрешено вносить какие-либо локальные изменения.
В этом сценарии вы решаете его необходимость иметь возможность проверить весь проект и построить его в любое время. Вы также избегаете тратить время на объединение изменений, которые не должны были быть проверены в первую очередь, потому что они не являются частью продукта: продукт является основной сборкой, и его необходимо содержать в чистоте. Если кто-то нарушает основную сборку (например, проверяет в своем собственном файле .project), вы можете отменить изменения или заставить того разработчика решить проблему.
Возможно, если он снова поднимет вопрос, вы можете снова предложить провести встречу (возможно, с другими разработчиками) и найти общую стратегию вместе.
Как я могу убедить партнера по команде, который считает себя старшим, лучше понять основы SVN?
Я думаю, что лучшей стратегией было бы избегать доведения конфликта до личного уровня, а скорее обсуждать имеющиеся проблемы и возможные решения. Если у вас сложилось впечатление, что он ищет личную конфронтацию, вот несколько советов (опять же из личного опыта):
- Как динамика вашей команды? У других ваших коллег такой же опыт работы с этим напарником? Есть много небольших, не слишком явных намеков, которые команда может дать одному из своих членов, чтобы препятствовать определенному поведению (небольшие шутки или наблюдения) и поощрять конструктивное противостояние (предложение встречи или неформальное обсуждение темы во время перерыва на кофе). ). Иногда хорошая команда может быстро изолировать беспокоящий элемент и привести вещи в норму.
- Насколько хорошо ваше управление персоналом? У нас был один конфликтный случай в нашей компании, и глава персонала должен был вмешаться, чтобы прояснить ситуацию. Это было нехорошо, но иногда рабочая атмосфера ухудшается настолько, что сама по себе не становится лучше. Я надеюсь, что это не ваш случай (у меня нет впечатления, что он зашел так далеко), но всегда полезно знать, есть ли у вас хорошая кадровая администрация или вам нужно решать конфликты самостоятельно.
Почему я пишу это? Вы говорите, что хотите «убедить товарища по команде, который считает себя старшим, лучше понять основы SVN». Для меня это звучит так, как будто конфликт становится слишком личным. Некоторые психологи утверждают, что 70% нашего общения происходит на эмоциональном уровне, если этот уровень не работает, тогда люди перестают говорить о фактах, потому что они слишком заняты, имея дело с эмоциями.
Таким образом, помимо объяснения ваших точек зрения, вы также можете попробовать что-то сделать, чтобы улучшить общение. Приглашение на кофе или на совместный обеденный перерыв, краткий разговор на тему, не связанную с работой и т. Д., Может улучшить общение и вернуть внимание вашего коллеги к важным фактам, которые вы хотите, чтобы он понял. Если он принимает такое общение, то, возможно, конфликты, которые у вас были до сих пор, были связаны с тем фактом, что вы плохо знаете друг друга, и были небольшие недоразумения, но он, вероятно, готов к конструктивному сотрудничеству. Если он отказывается, то на его стороне может быть более глубокая враждебность.
В этом случае, я думаю, вам следует подождать, пока ваши роли не прояснятся. Если ваш напарник официально не имеет более высокого ранга, чем ваш, он не имеет никакого смысла раздражаться вашими попытками улучшить положение вещей. Со временем ему придется принять это или сделать из себя дурака, если он будет пытаться показать, что знает лучше. Если он имеет более высокий ранг, вы должны найти способ дать ему понять, что это не обсуждается: ваши наблюдения направлены на повышение производительности, а не на подрыв его позиции, это должно быть на 100% ясно. Когда роли прояснены, если он все еще не может принять конструктивные предложения или критику, тогда у него действительно должны быть проблемы с самооценкой или что-то в этом роде.
Так что, если все вышеперечисленные стратегии потерпят неудачу, и вы продолжаете испытывать (очень) разочарование, я боюсь, единственное разумное, что можно сделать, это собрать вещи и искать лучшее место. Я сделал этот опыт три года назад и нашел гораздо лучшую компанию, в которой я сейчас очень доволен. Может быть, это не ваш случай (надеюсь, конечно, нет), но постарайтесь понять и этот момент.
Просто мои 2 цента.