Подтвердить что ты не робот

TFS как источник-контроль: что вам нравится? что ты ненавидишь?

Я использовал TFS около 18 месяцев, и я действительно не в восторге от этого. Это похоже на худшую из текущих версий SCM на рынке.

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

Каковы хорошие вещи о TFS и других элементах управления версиями - , что он делает хорошо, что никто другой не делает?

Каковы вещи, которые TFS плохие в, что все остальные, кажется, все в порядке?

4b9b3361

Ответ 1

Pros

  • В сущности это звуковая система. Надежный и надежный.
  • Интегрировано с рабочими элементами, отчетностью и т.д.
  • Электроинструменты действительно хороши.
  • [edit] Это улучшается, и он совершил хорошие прыжки вперед с 2010, 2012, 2013 годами.
  • TFS доступен для пользовательских инструментов. Там есть богатый API, который позволяет легко писать информационные панели и другие инструменты, чтобы получить данные в TFS. И поскольку все данные хранятся в SQL, вы можете просматривать их и запрашивать их напрямую, если это необходимо. За эти годы я работал со многими различными SCM и никогда не обнаружил, что он настолько открыт и доступен - все (рассказы пользователей, задачи, ошибки, проблемы, планы тестирования, итерации, управление исходными кодами и ветки, сборки, модульное тестирование, непрерывная интеграция) просто у вас под рукой. Это потрясающая функция TFS. Многие недостатки пользовательского интерфейса TFS были рассмотрены в течение нескольких дней после написания инструментов и панели инструментов для моей команды. И позвольте ему взглянуть на это, если вы напишете свое, оно сделает именно то, что вам нужно.

против

  • Существует одна область, где надежность не утихает: если вы применяете несколько изменений к файлу (добавьте, переименуйте, отредактируйте) в "один ход", он становится ужасно запутанным. Если вы не будете проверять эти действия отдельно, как TFS2005, так и TFS2008 сбой, когда вы переходите к объединению этих изменений по ветвям. В 2010 году он больше не сбой, но он часто неправильно проверяет изменения, поэтому вам нужно входить и очищать беспорядок пропущенных и неправильно названных файлов.

  • Нет автономного браузера управления версиями. Он интегрирован в VS, что очень раздражает, когда вы хотите просто работать с элементами управления версиями без необходимости запуска другой копии VS. Конечно, вы можете дать своему художнику Team Explorer, но спросите себя, может ли художник, который только когда-либо хочет просматривать файлы, проверять, проверять, и GLV действительно нуждается в полномасштабном сложном экземпляре VSTS для его достижения? Кроме того, интеграция настолько плоха, что вы не можете реалистично использовать TFS из Explover Solution (она просто заключается в том, что вы проверили, и настолько ненадежна, когда вы применяете действия из этого окна, которые вы скоро научитесь открывать источник контрольное окно и работать там, что поражает тот момент, когда он интегрируется в первую очередь). [edit: расширение проводника файла отлично - рядом с автономным браузером - и прост и прост в использовании. Основным недостатком этого является отсутствие правильной интеграции с файловыми командами - для переименования или удаления файлов, которые вы должны помнить для использования подменю TFS, или вы будете переименовывать/удалять локально, и это полностью устраняет исходный контроль, поскольку TFS ничего не знает об изменениях, которые вы сделал. К сожалению, это означает, что для использования только "продвинутым" пользователям TFS можно доверять. Таким образом, по существу, он по-прежнему является случаем "автономного браузера" для большинства пользователей.

  • Пользовательский интерфейс отстой (но улучшается, по крайней мере, на стороне доступа к сети). Конечно, это работает, но есть так много, что можно сделать, чтобы сделать его эффективным, приятным и более надежным в использовании. например [до 2012 года] Когда вы нажмете "check in", он отметит все оставшиеся элементы без проверки, чтобы, если вы случайно щелкните "Проверить" в будущем, он проверяет нагрузку, которую вы не хотели. И после этого было бы очень легко предоставить "отменную последнюю проверку", чтобы быстро отбросить ее обратно, но ее нет. [Изменить: пользовательский интерфейс улучшен, но эти конкретные проблемы все еще присутствуют в VS2010, хотя теперь у него есть диалоговое окно подтверждения регистрации, которое снижает риск случайных проверок] [edit: в 2012 году это намного лучше, но они сошел с ума и перевернул все отдельные диалоги TFS в одно окно, что было серьезным шагом назад. Окно ожидающих изменений не работает почти так же, как и в 2010 году - сложнее найти вещи, требуется больше кликов для достижения одних и тех же вещей, и если вы проверите файл из любого места, все текущие "включенные" файлы будут удалены в "исключен", поэтому, если у вас есть несколько вещей в пути, все они смешиваются вместе]

  • Workspaces. В большинстве случаев каждый член команды должен иметь по существу одно и то же сопоставление рабочей области, сместив локальную корневую папку. Нам нужно определить 7 отображений, для настройки которых требуется около 5 минут. Невозможно вытолкнуть определение рабочей области с сервера. Нет простого [edit] способа дублирования рабочего пространства, чтобы вы могли использовать в качестве отправной точки существующий (или другой пользовательский). Нет, вам нужно вручную повторно вводить все привязки снова и снова и снова. Если вы измените свою активную рабочую область в проводнике управления версиями, она не синхронизируется с вашим ожидающим окном изменений, поэтому вы тратите 15 минут на то, чтобы узнать, почему файл, который вы объединили из другой ветки, просто не указан. [edit: Это улучшается с 2010/2012, так как вы можете видеть рабочие области на других ПК и копировать и вставлять их более легко, но это все еще довольно неуклюжий пользовательский интерфейс]

  • У него есть изменения, но вы не можете связывать элементы с отдельными наборами изменений в списке ожидающих проверок, как вы можете в Perforce, вы можете связать их только с помощью набора изменений, фактически проверив их. Вы действительно можете работать только на одном наборе изменений за раз, или вам нужно отделить файлы вручную в своем ожидающем списке, когда вы отправляетесь на регистрацию. [все еще очень плохой в 2012 году]

  • Инструменты слияния ужасны. Как и в: они просто не работают и излишне вводят ошибки в ваш код, если вы полагаетесь на автоматическое слияние. Эти инструменты так же плохи, как и в случае, когда я впервые использовал SourceSafe в 1994 году. Поэтому первое, что вам нужно сделать после покупки очень дорогостоящей лицензии VSTS, - это заменить инструменты слияния чем-то, что действительно работает. И это означает, что каждый раз, когда вы получаете конфликт слиянием, вы должны выбирать каждый файл. Выберите, чтобы разрешить конфликт и нормально. Выберите, чтобы использовать инструмент объединения сторонних сторон и все в порядке. Затем слейте. Затем сохраните. Затем выберите принять ваши объединенные изменения. (Вы должны иметь возможность выбрать "автоматическое слияние" и просто использовать инструмент объединения третьей стороны, который фактически работает, не ударяя вас с заграждением бессмысленных и раздражающих диалогов, которые всегда по умолчанию не соответствуют) [Edit: InVS2010 инструменты слияния все еще ужасны. Но интерфейсный интерфейс интерфейса значительно улучшен (слияние конфликта теперь занимает один клик, а не 4 или 5 кликов - значительное улучшение, когда вам нужно объединить много файлов] [В 2012 году произошли дальнейшие улучшения, но они по-прежнему " ok ', а не хороший)

  • Не выполняется синхронизация между исполняемыми экземплярами VS. Поэтому, если вы зарегистрируете файл в одном VS, другой будет по-прежнему отображать этот файл в ваших ожидающих проверках. (его легко синхронизировать, потому что любые изменения, сделанные расширением windows-explorer для электроинструментов, мгновенно отражаются в VS). [Изменить: В 2012 году они исправили эту проблему. Теперь каждый раз, когда вы переключаетесь на просмотр ожидающих изменений, он проводит 15 секунд обновления (в 2010 году он кэшировал его и показывал его мгновенно, но иногда он устарел)]

  • Ветвление - это стандартный способ работы в эти дни. Поэтому вы ожидаете, что инструменты branch/merge сделают это быстрым и легким. Но нет. Большие улучшения были сделаны в 2010 и 2012 годах, но слияние сильно поддерживается - это действительно трудоемкий процесс. Просто маленькие вещи, такие как только возможность объединить смежный набор изменений, поэтому, если вы хотите объединить 5 изменений, которые не смежны, вы должны делать их один за другим, но каждый раз, когда вы открываете диалог, он начинается с нуля, а не запоминается где вы были, что вы в последний раз слились, список наборов изменений availablke и т.д. Вы должны иметь возможность выбирать любые нужные вам изменения, и он должен автоматизировать остальные]

  • Если вы используете GLV (получите последнюю версию) решение, а некоторые из проектов в нем были изменены, VS неоднократно спрашивает, хотите ли вы перезагрузить каждый измененный проект. Это примерно в 10 раз быстрее, чтобы закрыть ваше решение, а затем GLV, а затем снова открыть решение, а не GLV с открытым. Если я GLV'ing, то, конечно, я хочу перезагрузить проекты! Когда я покупаю свою еду в супермаркете, они не спрашивают меня о каждом предмете "хотите ли вы взять этот предмет домой с собой?". [Edit: Still broken in VS2010] [Исправлено в 2012 году. Ура!]

  • [edit] Если два члена команды добавляют новый проект в решение, тогда, когда второй человек отправляется на регистрацию, они должны (очевидно) разрешить конфликт слиянием. Тем не менее, TFS рассматривает .sln как текстовый файл и развращает его (он добавляет две записи проекта, но количество проектов эффективно увеличивается только один раз). Было бы так легко исправить формат sln, чтобы сделать файлы слиявшими.

  • [edit] Я не выполняю никаких операций управления версиями из окна Solution Explorer, поскольку он был довольно ненадежным с тех пор, как впервые появилась интеграция. Даже в 2008 году он обычно имеет случайные "проверенные" значки в файлах, которые не выписаны, а рекурсивные операции иногда делают странные вещи. Почти каждый "контрольный" контрольный элемент управления является результатом того, что кто-то запускает операцию из обозревателя решений. К счастью, я предпочитаю работать в окне управления версиями в любом случае. [2012: К сожалению, не могу сказать, исправлено ли это, поскольку я не использовал эту функцию с 2008 года)

  • [править] Где начать с окна привязки источника? VS мог сказать: "Настройки вашего исходного контроля были повреждены снова по какой-либо очевидной причине. Я никогда не мог похвастаться четвергами. Должен ли я исправить это для вас? [ДА]", но вместо этого он показывает сложный, запутанный диалог, полный информация, которая не имеет никакого отношения ни к кому, приводит к тому, что пользовательский интерфейс настолько пугает, что он заставляет младших программистов сажать себя. Трюк состоит в том, чтобы игнорировать все окно, спрятаться за вашим столом и нажать кнопку "исправить", и он исправляет его.

  • [edit - добавлено 12/2010] Когда вы получаете исходный код, особенно при разрешении конфликтов слияния, другие окна часто выводятся на передний план (либо обозреватель решений перескакивает перед представлением "Ожидающие изменения", которое я состыковались в той же области с вкладками, или окно управления исходным кодом исчезает за другим окном документа. Это очень раздражает, когда у вас есть другой файл для слияния или другая папка для Get, поскольку вам нужно "находить" контроль источника/ожидающие изменения windows. Получение кода не должно постоянно переупорядочивать мои окна документов/инструментов. [2012: все еще не работает]

  • [edit - добавлено 1/2014] С TFS 2012/2013 существует выбор серверных или локальных рабочих областей. Сервер - это имя старой системы, где вы должны быть в сети с сервером для проверки файлов. Локальный - это новый по умолчанию и делает копию всего исходного репозитория на вашем компьютере, позволяя вам вносить изменения в любые файлы без необходимости их проверки в первую очередь. Затем TFS разграничивает ваши файлы по локальной копии, чтобы определить, что вы изменили. Это звучит хорошо, и для многих это, вероятно, хорошо, но у него есть некоторые серьезные недостатки, о которых вы должны знать:

    • Поскольку вы больше не проверяете файлы, они не блокируются при их редактировании, и поэтому несколько человек могут редактировать любой файл одновременно, требуя операции слияния при их регистрации. Это нормально для текстовых файлов, основанные на исходных кодах, но приводят к трудным ситуациям или потерянной работе, когда файлы не размножаются. Незамеряемые или неавтоматически объединяемые файлы включают Solution, Project, Resource (resx), XAML и любые другие XML файлы, поэтому это создает множество проблем в среде разработки. Если (например, мы) вы также хотите хранить документы Word и Excel и двоичные файлы под контролем источника, локальные рабочие области являются положительно опасными. Мы потеряли несколько дней работы, потому что кто-то невольно использовал локальную рабочую область, и тогда было практически невозможно объединить их изменения. Вы можете перенастроить сервер TFS, чтобы сделать рабочие области сервера по умолчанию защищенными от этого.

    • В локальных рабочих пространствах вам нужно сохранить две копии всего на вашем компьютере. Когда мы обновили TFS, мы внезапно обнаружили, что все потеряли 25 ГБ дискового пространства, и потребовалось несколько недель, чтобы понять, куда ушло дисковое пространство! Это была серьезная проблема для нас, потому что все мы используем твердотельные накопители, и только сейчас (2014) SSDs становятся большими/дешевыми, что мы можем позволить себе быть настолько неэффективными с нашим дисковым пространством.

    • В течение нескольких недель, когда мы использовали локальные рабочие области, у нас было несколько инцидентов, в которых поврежденные файлы TFS или потерянные изменения, по-видимому, вызваны ошибками в реализации. Вполне просто, мы не можем принять что-либо менее 100% надежности для нашей системы управления версиями.

    • TFS становится намного легче управлять; в эти дни, если вы не хотите настраивать что-либо слишком много, вы можете настроить сервер за очень короткое время (часы), а также настроить непрерывные сборки интеграции и резервные копии и т.д. очень просто. С другой стороны, в то время как мне было очень легко настроить резервные копии базы данных TFS, восстановление этой базы данных и запуск и запуск после того, как наш сервер закрепил себя, был другим вопросом - для устранения лишних проблем блокировки потребовалось 4 дня ( например, вам необходимо восстановить резервную копию сетевого диска, данные не могут быть локальными. Когда я попытался восстановить образ на восстановленном сервере, TFS продолжала говорить мне, что не было никаких баз данных, которые можно было бы восстановить., TFS не будет использовать базы данных, потому что они не соответствуют хост-серверу (поскольку этот сервер не был удален, ОС была переустановлена). Для восстановления резервной копии потребовалось много поиска и исправления. работа "!

Как вы можете видеть, большинство из них - это просто тривиальные UI-атаки. Существует очень много возможностей, которые могут быть улучшены в пользовательском интерфейсе. Но фактический базовый продукт хорош. Я предпочитаю TFS почти во всех других SCM, которые я использовал за последние 28 лет.

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

Ответ 2

Ненавидит

  • Не отслеживает изменения файлов, если вы их не проверили, поэтому, если вы редактируете файл в Notepad ++, TFS не знает, что что-то изменилось.
  • Очень легко кому-то проверить филе и заблокировать ее, чтобы никто другой не мог вносить изменения. TFS не должен отказываться от этой способности, но, безусловно, это должно сделать намного сложнее, чем сейчас.
  • Способы отменить фиксацию или две вещи очень неясны, настолько, что я никогда не был уверен, работает ли это или нет.
  • Способ, которым TFS делает файлы только для чтения, если вы их не проверяете, является неприятным, хотя он помогает мне не забывать проверять файлы, прежде чем я сохраню исправления, которые я сделал.

Loves

  • Я полагаю, что встроенная интеграция с визуальной студией хороша, если вам нравится такая вещь (я этого не делаю)

Ответ 3

Я являюсь членом команды Team Foundation Server в Microsoft. Здесь очень много важных вопросов. Некоторые из них рассматриваются в выпуске 2010 года. Другие остаются проблемами, но мы их узнаем и работаем над улучшением опыта разработчиков в следующем выпуске. Дискуссии, подобные этому, отлично подходят для того, чтобы помочь нам убедиться, что мы решаем правильные проблемы.

Ниже приведена информация по вопросам, которые, по крайней мере, частично рассмотрены сегодня в версии 2010 года:

Автономный клиент

Для клиентов, не являющихся разработчиками, которые хотят использовать продукт вне VS, они могут использовать расширение Windows Shell powertool.

Если у вас есть пользователи (разработчики или нет), которым необходимо получить доступ к TFS с не-Window-машин, они могут использовать Team Explorer Everywhere. Это поддерживается на платформах, включая Mac и Linux.

Рабочая область копирования

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

Tf/workspace/new/template [имя/имя рабочей области для копирования с]

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

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

Объединяющая надежность

Сценарий, описывающий, где вы добавляете, переименовываете, добавляете, а затем имеете проблемы при объединении, был адресован в TFS 2010.

Ветка/Слияние как опыт первого класса

В TFS 2010 ветки теперь являются объектами первого класса в TFS. Вы можете визуализировать свои ветки и даже отслеживать изменения по мере их перемещения по ветке. Ветвление также является операцией с быстрым сервером.

Получить последнюю версию нескольких проектов

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

Блокировка файлов

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

Ответ 4

Кон: модель заказа. Многие приложения не справляются с файлами, которые помечены как "только для чтения", а затем изменяются на запись (Word 2007, "Блокнот" ). Итак, вы открываете файл, редактируете файл, пытаетесь сохранить, тогда вам говорят, что вы не можете сохранить, потому что он доступен только для чтения. Отлично, теперь вам нужно Сохранить как..., удалить оригинал и переименовать новый в старое имя. Если у меня есть потенциал для того, чтобы локальные файлы были доступны только для чтения, я не вижу его. Мне очень нравится подход Subversion к этому.

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

Ответ 5

Я думаю, что TFS - единственный лучший продукт ALM на рынке сегодня. Глядя на это только с платформы управления версией, она наклонена. В моей карьере я использовал множество продуктов: VSS, SVN, Git, StarTeam, CC/Harvest и ClearCase - кроме TFS. Лично я сжимаю мысль о возвращении к чему-то другому, кроме TFS.

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

Ответ 6

Con: Временные метки. Невозможно установить TFS для использования удаленной последней модифицированной временной метки в качестве локальной временной метки последнего изменения. Местная временная метка файла сообщает мне только когда я получил файл. Если я получу файл, которому 2 года, нет никакого способа узнать, что на основе локальной метки времени.

Другие средства управления версиями, которые я использовал, обладают этой способностью.

Ответ 7

Минусы:

  • версия рабочего пространства: вы не можете определить версию рабочего пространства, не делая рекурсивного поиска.
  • ужасный автономный опыт. attrib -r + tfpt online не должен работать в автономном режиме. Дайте мне что-то вроде git, что позволяет мне отслеживать статус, отменять и вносить изменения. Я даже прекрасно, если он сохраняет только разницу между версией рабочего пространства и текущим.
  • Объединяющая надежность: измененный файл на сервере + локальное редактирование на разных строках не является конфликтом. файл с записью не должен быть автоматическим конфликтом. Кнопка автосервера НЕ должна существовать, потому что она никогда не должна быть сценарием.
  • Рабочие пространства: идея переустановки структуры источника просто нечетна и вызывает проблемы. требование иметь обе ветки, отображаемые для слияния, является нечетным. Требование сделать операцию несколько раз, потому что у моего сопоставления рабочей области нет истинной корневой папки.
  • Полная зависимость от удаленного сервера: есть некоторые приятные вещи о том, что все эти вещи хранятся на сервере, но на самом деле вы можете хранить информацию локально, а затем загружать ее, когда это необходимо. Сохранять ожидающие изменения, сопоставления рабочих пространств, локальную историю отмены и т.д.

Pros

  • Полки: Я люблю их и желаю, чтобы поддержка для них также была доставлена ​​на локальный диск (подумайте git stash)
  • Вид управления источником в VS: довольно круто, чтобы иметь возможность просматривать весь репозиторий, не загружая его. Есть некоторые проблемы юзабилити, но общая идея классная.
  • Рабочие области: yep, оба места. В то время как повторная организация репо нечетна, способность загружать только то, что вам нужно, является довольно удивительной. Мне часто жаль, что я не могу выбрать корневую папку, а затем установить нужные мне пути, но хорошо.

Ответ 8

Не любит:

  • Использование истории для выяснения того, что было сделано, является громоздким, если не сказать больше. Вы должны щелкнуть по каждой записи истории, чтобы увидеть, какие файлы были изменены, а затем вам нужно перейти через контекстное меню, чтобы получить diff.
  • Работа при отключении от сети - это большой нет-нет. Когда-либо слышал о работе на самолете?
  • Нет интеграции с Windows Explorer, когда вы работаете с файлами вне VS (думаю, TortoiseSVN).
  • Методологи процесса (менеджеры конфигурации) любят не допускать совлокальные проверки. Это абсолютно ужасно, например, для файлов конфигурации, которые необходимо изменить для тестирования.
  • SC запутывается со сложными операциями перемещения/удаления.
  • SC не распознает, когда извлеченный файл не изменился. Например, обновления справочной службы проверяют все связанные файлы и часто восстанавливают то же содержимое. Эти файлы должны неявно удаляться из закладок, потому что они просто добавляют шум, когда вы смотрите на свой набор изменений позже.

Любит:

  • Стеллаж.

Кто-нибудь догадался, какая моя любимая система SCM? SVN + TortoiseSVN + VisualSVN: -)

Ответ 9

Отсутствие истинной поддержки отката и невозможность переименовать проект TFS - это мои два основных домашних пижама с TFS. Кроме того, я был очень доволен этим в течение 2-3 лет.

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

Ответ 10

Функция поиска не реализована в TFS 2010? VSS у нас есть поиск в файле; TFS 2008 у нас есть файл поиска...

Ответ 11

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

Ответ 12

Отсутствие отката было моей самой большой точкой боли.