Как избежать неправильной ветки?


27

Чтобы избежать проблем, обычно достаточно быть осторожным, но иногда мне нужно дважды проверить ветку, над которой я работаю ( например, «хм… я в devветке, верно?»), Проверив путь управления исходным кодом случайным образом. файл.

В поисках более простого способа я подумал о присвоении имен файлам решения соответственно ( например MySolution_Dev.sln ), но с разными именами файлов в каждой ветви я не могу объединить файлы решения.

Это не так уж важно, но есть ли какие-то методы или «маленькие хитрости», которые вы используете, чтобы быстро убедиться, что вы в правильной ветке? Я использую Visual Studio 2010 с TFS 2008.


2
Это звучит как хороший кандидат для написания Расширения VS 2010, которое позволяет какой-то настраиваемой визуальной подсказке указывать ветвь. Возможно раскрасить фон Solution Explorer в соответствии с пользовательскими настройками (я бы сделал зеленый для Dev, желтый для QA и красный для Prod).
Джесси С. Slicer

Хорошая идея, даже индикатор в строке заголовка VS поможет.
henginy

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

У TFS нет чего-то эквивалентного git statusили hg status?

Я использую пользовательский интерфейс VS для операций TFS, поэтому у меня нет никакой идеи.
henginy

Ответы:


16

Я использую это http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Обновляет ваш заголовок, например:

Разработка \ мойпроект

или

Main \ myproject

или

Release \ myproject

Надеюсь, это поможет


Это, кажется, делает, я попробую ..
henginy

Я использую это расширение именно для этой цели. На самом деле, я собирался опубликовать ссылку, когда увидел, что ynnok уже есть.
Бобсон

1
Я закончил тем, что использовал это, поскольку я вижу это в названии, на какой ветви я нахожусь. Действительно удивительным!!!
Петр Кула

Да, это действительно очень удобно!
henginy

16

Назовите рабочие каталоги по-разному. То есть, если ваш проект называется «MY_PROJECT», создайте разные рабочие каталоги для каждой ветви. Если есть одна ветвь с именем «dev», то вам понадобится каталог для trunk и каталог для dev, например:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

На самом деле рабочие каталоги названы по-разному. Но в уже открытой Visual Studio (например, после перерыва на кофе и возвращения на рабочий стол) мне нужно проверить путь к файлу, чтобы увидеть каталог. Так что, я думаю, это самый простой способ и от этого не уйти?
henginy

2
@henginy Это хорошее разъяснение. Чтобы определить это в Visual Studio, я наведите курсор на вкладку открытого файла. Он отобразит всплывающую подсказку с полным путем к файловой системе, из которой я могу определить, является ли корень "-dev" или "-trunk". Попробуйте и посмотрите, работает ли он для вас.
Мэтью Родат

1
Да, именно так я «проверяю путь контроля исходного кода случайного файла», и я пытаюсь найти более быстрый путь :)
henginy

@henginy О, верно. Вы сказали, что в ОП. Я не знаю лучшего выхода из головы. Похоже, я совсем не улучшил твою ситуацию. :-(
Мэтью Родат

Я должен был уточнить это лучше в моем вопросе. Спасибо за помощь!
henginy

8

Я не работаю в общей ветке разработки или магистрали.

Я ВСЕГДА работаю в тематических ветках. Когда функция сделана, я следую за этими шагами.

  1. Откройте Source Control Explorer.
  2. Слияние с dev в текущую ветку объектов.
  3. Исправьте любые конфликты и убедитесь, что все работает.
  4. Проверьте снова. Объединить функцию в ветке разработчика.
  5. Open Dev Solution.
  6. Проверьте ветку разработчика.
  7. Закрыть dev решение.
  8. Пусть CI строит и разворачивает.

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


7

Вы можете создать пустой файл в каждой ветви, например, THIS_IS_TRUNK.txt в транке и THIS_IS_DEV.txt в DEV.


2
Это может на самом деле работать .. Особенно с подчеркиванием перед именем файла, чтобы переместить его вверх в обозревателе решений.
henginy

6

Я делаю много своей (D) VCS работы из командной строки. Я настоятельно рекомендую иметь ваш быстрый дисплей, где вы находитесь. Например, мое приглашение в репозитории Git выглядит так (я делаю это и для SVN):

[BranchName]RepoTop/path/to/current/wd >>

И если репо в данный момент грязное (незафиксированные изменения):

[BranchName!!]RepoTop/path/to/current/wd >>

У меня также есть фон, установленный на красный, если вы вошли в prod, и тому подобное. Я считаю простые визуальные уведомления очень эффективными для меня.

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


4

Существует бесплатное расширение Visual Studio под названием TFS Solution Info, которое может помочь в этом. Он показывает вам текущую ветку и рабочее пространство в небольшом окне, которое вы можете закрепить / закрепить где угодно.


Выглядит потрясающе, но поддерживает VS2012
Петр Кула

3

Я использую расширение VSCommands (с Visual Studio 2012, но есть версия 2010 года), и оно удобно помещает имя ветви в верхнем левом углу экрана, а также в обозреватель решений.

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


1
Выглядит здорово, к сожалению, ты должен заплатить за все лишние вещи, которые могут не понадобиться :(
Петр Кула

2

Я избегаю работать в неправильной ветви, делая почти все в одной ветви (в магистрали - в соответствии с так называемой стратегией ветвления "нестабильной магистрали" ).

Случаи, когда я вынужден обновлять ветки, довольно редки - это исправления до и после выпуска (код кандидата на прод-код изолирован в ветках). Так как эти исправления также должны быть в транке, я обычно проектирую, тестирую и проверяю их прямо в транке, а затем переносу в ветку prod. Портирование, как правило, требует простой копии от 1 до 5 файлов для проверки и сборки.

  • Мне также несколько повезло, что в большинстве моих проектов руководство предпочло убедить клиентов использовать более новые выпуски, а не исправлять старые - это приводит к тому, что послепроизводственная часть обновлений в филиалах сводится к почти ничтожному минимуму.

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

@henginy Я не могу вспомнить случаи, когда у меня была роскошь вообще не поддерживать предыдущие версии. Тем не менее, отношение менеджмента здесь может иметь большое значение: в зависимости от этого можно, например, внедрить 1-2 исправления в год в старых ветках или связываться с этими половинами все время
комнат

1

Конкретный ответ зависит от используемого вами программного обеспечения для управления версиями, но обычно есть команда, которая позволяет вам легко увидеть ветку, над которой вы работаете. Например, с Subversion используйте svn infoкоманду в каталоге, чтобы увидеть URL для этой ветви. Если вас больше интересует конкретный файл, вы также можете указать это:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

По URL я вижу, что моя копия файла foo.c находится в ветке caleb-dev.

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


1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.