2011-02-04 4 views
0

Предположим, что I Branch Solution-A, набор изменений 10 в Solution-B.TFS - Можно ли отменить набор изменений, выделенный перед разветвлением?

Позже, я понимаю, что решение-B не должно содержать в нем изменений 7.

Есть ли способ отменить набор изменений 7 только из решения B без ущерба для решения A?

Всякий раз, когда я использую откат tf, все ожидающие изменения идут в Решение-A.

Заранее благодарен!

ответ

0

Вы должны откатить ревизии, который имеет сливается раствор Б, а затем повторно объединение без ревизии 7.

+0

Есть много слияния сделано так, что совершал (тот, который я должен откатить) и что лежит в ревизии грандиозной грандиозной грандиозной родительской ветви :( – IsmailS

-1

Я рекомендую использовать TFPT.exe, который поставляется с электроинструментами пакетом: http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f/

Обзор высокого уровня:

  1. из отображения рабочего пространства в Solution-B откатить
  2. ревизии
  3. Зафиксируйте изменение для отображения рабочего пространства в Solution-B

Команда:

  1. C: \ рабочего пространства \ отображение \ к \ решения \ B> TFPT откат/ревизия: 7
  2. C: \ рабочего пространства \ отображение \ к \ решения \ Ъ> Т.Ф. commit
+0

я думаю, что они удалены Откат от электроинструментов, как только они получили его на tf.exe ... Я попытался использовать tf rollback в сопоставлении рабочей области, и у меня появилось сообщение «ничего не откат» или что-то в этом роде. –

+0

нет команды 'tfpt rollback', и нет никакой команды' tf commit'. – IsmailS

0

Наконец-то я сделал что-то вроде ниже.

  1. Откат изменений набора 7 в решении-A и проверки. Это создаст ревизию 11 на решение-A
  2. Слияние ревизии 11 для Solution-B ветви
  3. Откат изменений 11 на Solution-A филиала и фиксированием, который будет создавать ревизию 12 на решение-A

В будущие слияния с Solution-B из решения-A сменить смену изменений 12.

1

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

Обновление WORKSPACE_ROOT и TFS_BRANCH_ROOT в следующем пакетном файле. Назовите его, например. RollbackMigrate.cmd и всегда запускайте его из корня рабочей области.

Этот пакетный файл будет: аргументы

  1. Разбор - только один аргумент является изменение номер набора
  2. Найдите имя текущего рабочего пространства, и это путь на TFS
  3. Найти путь источника TFS для миграции
  4. Карта источника в текущее рабочее пространство
  5. отката изменения набора
  6. Создать Полочка установить и отменить проверку из
  7. Снимите отображение временного
  8. Unshelve ранее созданную полки набора и перенести его
    • вам просто нужно автоматически объединять shelveset в новом окне
  9. Удалить временный Shelve набор
  10. Checkin
    • Вам необходимо изменить комментарий, ноты и ссылку на работу

@echo off 
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION 

set WORKSPACE_ROOT=D:\PathToMyWorkspaces 
set TFS_BRANCH_ROOT=$/Project/Branches 

:01_ARGUMENT_PARSING 
echo Rollback changes from another branch 
if [%1]==[] (
    set /P CHANGESET=Enter changeset number: 
    if [!CHANGESET!]==[] (
     echo Changeset number is required! Exiting! 
     exit /B 1 
    ) 
) else (
    set CHANGESET=%1 
    shift 
) 
set SHELVE_NAME="Auto shelved rollback of %CHANGESET%" 

:02_FIND_MY_WORKSPACE_NAME 
for %%i in (.) do (
    set WORKSPACE=%%~nxi 
) 
if not [%CD%]==[%WORKSPACE_ROOT%\%WORKSPACE%] (
    echo This script works only in the root of workspace e.g. D:\PathToMyWorkspaces\MyWorkspace 
    exit /B 1 
) 
echo Current workspace is %WORKSPACE% 
for /f %%i in ('tf workspaces %WORKSPACE% /noprompt /format:detailed ^| grep -om 1 "$/[^:]\+"') do (
    if not [%DST%]==[] (
     echo Cannot work on workspaces with more mappings! Exiting! 
     exit /B 2 
    ) 
    set DST=%%i 
    echo Found destination path for migration: "%%i" 
) 

:03_VIEW_CHANGESET 
for /f %%i in ('tf changeset 1570888 ^| grep -om 1 "%TFS_BRANCH_ROOT%/[^/]\+/[^/]\+"') do (
    set SRC=%%i 
    echo Found source path for migration: "%%i" 
) 
if [%SRC%]==[] (
    echo Cannot find path to source branch! Exiting! 
    exit /B 3 
) 
for %%i in (%SRC%) do (
    set SRC_BRANCH=%%~nxi 
) 

:04_MAP_SOURCE 
set TMP_SRC_PATH=%WORKSPACE_ROOT%\%WORKSPACE%_%SRC_BRANCH% 
echo Create temporary mapping for source branch in %TMP_SRC_PATH% 
mkdir %TMP_SRC_PATH% 
echo Creating mapping for "%SRC%" to "%TMP_SRC_PATH%" 
tf workfold /map %SRC% %TMP_SRC_PATH% 
if %errorlevel% NEQ 0 (
    echo Can't create mapping for "%SRC%", exiting! 
    exit /B 4 
) 

:05_ROLLBACK_CHANGESET 
echo Performing rollback of changeset %CHANGESET% 
tf rollback /changeset:%CHANGESET% /lock:checkin /keepmergehistory 

:06_SHELVE_ROLLBACK 
echo Shelving rollback 
tf shelve /comment:%SHELVE_NAME% %SHELVE_NAME% /noprompt /move /replace 

:07_UNMAP_AND_DELETE_TEMPORARY 
echo Unmapping "%SRC%" from "%TMP_SRC_PATH%" 
tf workfold /unmap "%TMP_SRC_PATH%" 
echo Deleting "%TMP_SRC_PATH%" 
rmdir /S /Q "%TMP_SRC_PATH%" 

:08_UNSHELVE_MIGRATE 
echo Unshelving the rollback... 
tfpt unshelve /migrate /source:"%SRC%" /target:"%DST%" %SHELVE_NAME% /noprompt 

:09_DELETE_THE_SHELVESET 
echo Deleting the shelveset 
tf shelve /delete %SHELVE_NAME% /noprompt 

:10_CHECKIN 
echo Checking in the rollback... 
tf checkin 
Смежные вопросы