Как создать ветку в размещенном проекте TFS/Codeplex?

Возможно, это связано с тем, что я не знаком с TFS (я работал в основном с SVN), но я не понимаю, как создать ветку в размещенном проекте Codeplex.

Я использую VS2012. В проводнике управления версиями я выбираю Ветвление и слияние > Ветвление... в контекстном меню, но тогда я не знаю, что ввести в поле Цель:

enter image description here

Если я попробую $/wpfanimatedgif/branches/1.3, я получаю следующую ошибку:

Целевой элемент $/wpfanimatedgif/branches/1.3 не может находиться под исходным кодом $/wpfanimatedgif.

Если я попробую $/branches/1.3, я получу эту ошибку:

TFS10198: Контроль источника должен входить в существующий командный проект. ветки - это не командный проект.

Я также попытался создать новый командный проект из Team Explorer, но у меня нет необходимых разрешений.

Итак, как я могу создать ветку? Или это невозможно сделать в проекте Codeplex?

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

Ответ 1

Во-первых, это может помочь понять, что такое "Team Project" - это логическая запись в исходном элементе управления на верхнем уровне дерева управления версиями и предназначена, как правило, для группы разработчиков и различных разрешений и настройки установлены на этом уровне. В рамках Team Project вы можете иметь несколько проектов разработки, таких как решения Visual Studio или Java-проекты. В этом случае проект вашей команды $/WpfAnimatedGif.

Что касается ветвления и слияния, это происходит ниже уровня Team Project, как правило, в виде одноранговых узлов для ваших ветвей trunk или main. Различные стратегии ветвления и слияния описаны в Руководство по ветвлению и объединению TFS, но упрощенный пример для решения Visual Studio под названием "WpfAnimatedGif" может иметь которая выглядит так:

$/WpfAnimatedGif/main/WpfAnimatedGif
$/WpfAnimatedGif/branches/1.3/WpfAnimatedGif
$/WpfAnimatedGif/branches/test_features/WpfAnimatedGif

Что касается "лучших практик", они должны были создать папку trunk или main под папкой $/WpfAnimatedGif и переместить ваши проекты VS под этим. Тем не менее, вы можете создать новую папку для каждой ветки и разделить каждый проект независимо.

Например:

$/WpfAnimatedGif/WpfAnimatedGif разветвлено до $/WpfAnimatedGif/branches/1.3/WpfAnimatedGif

и

$/WpfAnimatedGif/WpfAnimatedGif разветвлено до $/WpfAnimatedGif/branches/1.3/WpfAnimatedGif.Demo

Однако, поскольку эти ветки независимы, вам также необходимо будет объединить эти две папки независимо, вместо атомарного из папки branches.