2010-02-09 2 views
12

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

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

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

Кстати, у меня возникла идея создать вторую рабочую область here.

ответ

11

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

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

Однако, я нашел один случай, когда это было очень полезно для меня: Я часто отскакиваю от двух разных машин разработки (один в офисе, один у себя дома, подключенный через VPN). Если я работаю над чем-то, и я хочу перенести его из дома на работу, или наоборот, я часто использую стеллажи. Я могу отложить его с одной машины и отложить ее от другого. Я делаю это, когда я нахожусь в середине изменения, и проверка будет разбивать сборку или иным образом прерывать других разработчиков.

+0

А, так что я должен по крайней мере отложить мои изменения в моем исходном рабочем пространстве, чтобы сделать резервную копию изменений. Кроме того, стоит упомянуть использование стеллажей для перемещения изменений между ПК. Я мог видеть, что это очень полезно. – JChristian

1

Стеллаж - идеальный вариант. Стеллаж позволяет вам вносить изменения в MFS в TFS вне регулярной сборки и извлекать их позже по имени. Несколько рабочих областей не являются решением для того, что вы делаете. Несколько рабочих областей хороши, если вы поддерживаете разные версии продукта и должны работать над ними, например. допустим, у вас есть продукт 4.0 и 5.0 и вам необходимо применить исправление безопасности для обеих версий. Стеллажи великолепны, если вы хотите внести изменения, но не немедленно их совершите.

+0

Разве не ветвление используется для работы с несколькими версиями? Или у каждого отдельного рабочего места для каждой ветки? – JChristian

+0

Да, но вы должны использовать разные рабочие области, чтобы добраться до каждой ветки. –

3

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

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

+0

Я не думал создать другую ветку. Вы предлагаете мне создать вторую ветку для заблокированной функциональности, над которой я работал, а затем использовать основную ветку для работы с дефектами? – JChristian

+1

@JChristian - Я не говорю, что у вас должно быть. Но альтернативой могло бы стать создание ветви либо для вас, либо для внешних ресурсов для работы, а затем объединить их вместе, когда это будет сделано. Я часто делал это при работе над следующей версией приложения, если изменения, которые я собираюсь сделать в текущей версии, значительны, и я хотел работать над ними изолированно. –