ClearCase не может объединяться из представления снимка - PullRequest
0 голосов
/ 28 октября 2018

Я использую IBM Rational Clear Case, у меня есть вид снимка с некоторыми извлеченными файлами.Это представление скоро устареет, и мне нужно, чтобы эти извлеченные файлы были объединены с новой версией (Новое представление).

Моя проблема: я использую ClearCase Version Tree Browser (clearvtree.exe) длясделай мое слияние.Я открыл дерево версий для одного из извлеченных файлов, в представлении которого я хочу объединить файл.Теперь, когда я пытаюсь выбрать извлеченный файл: щелкните правой кнопкой мыши -> и выберите «Объединить с» Я получаю следующую ошибку: «Выбранная версия недоступна из этого представления».

Обратите внимание, что при выполнении той же процедуры в Dynamic View все работает нормально.

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

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Описание, кажется, противоречит само себе.Вы находитесь в ОДНОМ представлении снимка и пытаетесь объединить ИЗ проверенной версии в другую?Как правило, это не будет работать по причине, указанной @VonC.Ядро ClearCase официально не «знает», где находится последнее рабочее пространство представления снимка для этого другого представления, поэтому оно не может получить доступ к частной копии представления.Это также может не сработать для динамического представления в зависимости от прав доступа.

Если вы пытаетесь объединить произвольную версию с вашей извлеченной версией, вы должны получить «элемент уже извлечен в этом представлении» (или слова на этот счет), поскольку только одна версия элемента можетбыть проверены в данном представлении.

0 голосов
/ 28 апреля 2019

ОК, я написал скрипт (на самом деле два - которые могут быть объединены в один), который делает то, что мне нужно: для автоматического слияния из представления снимка в динамическое представление. Я предполагаю, что он также будет работать с любой другой комбинацией, но от динамического до динамического или от динамического до моментального снимка уже поддерживается инструментом IBM ClearCase "Merge Manager" *1006*.

First Scrip найдет все извлечения и отформатирует их соответствующим образом, добавив их в files.txt:

@echo off
REM ------------------------------- synopsis ----------------------------------
REM This script creates a list of all checked out into files.txt under the 
REM batch-file directory.
REM files in the following format:
REM \VOB1\file1.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file1
REM \VOB2\file2.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file2
REM \VOB2\file3.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file3
REM ------------------------------- synopsis ----------------------------------

set source_view_path=C:\Snapshot\some-snapshot-john
set currentDirectory=%~dp0
set chekedOutOutputFile=%currentDirectory%find_co.txt
set resultFile=%currentDirectory%files.txt

@echo Getting checkouts of %source_view_path%
@echo %currentDirectory%

REM ---------------------------------------------------------------------------
REM The next code produces a find_co.txt intermediate file with the following 
REM format of checkouts:
REM <File Full Path>@@<Version ID>@@<File Comment>
REM    %n  - for file Name (With full path)
REM    %Vn - for file Version ID.
REM    %c  - for file Comment
REM
REM Example:
REM C:\MY_VIEW_PATH\VOB1\file1.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file1
REM C:\MY_VIEW_PATH\VOB2\file2.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file2
REM C:\MY_VIEW_PATH\VOB2\file3.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file3
REM --------------------------------------------------------------------------- 
pushd %source_view_path%
cleartool lsco -cview -avobs -fmt "%%n@@%%Vn@@%%c" > "%chekedOutOutputFile%"
popd

del /q "%resultFile%"

REM ---------------------------------------------------------------------------
REM The following code formats the find_co.txt into files.txt with the desired 
REM result - <File VOB Path>@@<Version ID>@@<File Comment>
REM Example:
REM From -
REM C:\MY_VIEW_PATH\VOB1\file1.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file1
REM C:\MY_VIEW_PATH\VOB2\file2.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file2
REM C:\MY_VIEW_PATH\VOB2\file3.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file3
REM To 
REM \VOB1\file1.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file1
REM \VOB2\file2.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file2
REM \VOB2\file3.txt@@\main\branch_v111\CHECKEDOUT@@Comment for file3
REM ---------------------------------------------------------------------------
for /F "usebackq tokens=*" %%A in ("%chekedOutOutputFile%") do (
    call ::removeSourceViewPath "%%%A"
)
goto endOfScript

REM ---------------------------------------------------------------------------
REM Manipulate the path of each file to exclude the view from it e.g:
REM C:\MY_VIEW_PATH\MY_VOB\file.txt -> \MY_VOB\file.txt
REM >>>-----------------> start of :removeSourceViewPath 
:removeSourceViewPath
    set str=%1
    call set "resultStr=%%str:%source_view_path%=%%"
    set resultStr=%resultStr:~1,-1%
    @echo %resultStr%
    @echo.%resultStr%>>"%resultFile%"
    exit /b

REM <<<-----------------< end of :removeSourceViewPath
REM ---------------------------------------------------------------------------

:endOfScript

pause
@echo ------------------------------------------------------------------

Второй скрипт берет файл files.txt и объединяет их из исходного представления в целевое:

@echo off
REM ------------------------------- synopsis ----------------------------------
REM This script takes a list of all files from the files.txt which is under 
REM this batch-file directory and merges them from TARGET to SOURCES views
REM files in the following format:
REM <File VOB Path>@@<Version ID>@@<File Comment>
REM are merged from <SOURCE_VIEW>\<File VOB Path> to 
REM <TARGET_VIEW>\<File VOB Path> with the <File Comment> as comment.
REM ------------------------------- synopsis ----------------------------------
setlocal

set TARGET_VIEW=V:\v11-john-local-nt
set SOURCE_VIEW=C:\Snapshot\some-snapshot-john

REM ---------------------------------------------------------------------------
REM The following takes the line:
REM <File VOB Path>@@<Version ID>@@<File Comment> and checks out the target 
REM file, then it automatically merges the file from source to target.
REM Note that the version is not required here (it might be required if we
REM want to merged from a version which is not the latest one in the branch).
REM ---------------------------------------------------------------------------
for /f "tokens=1,2,3 delims=@@" %%i in (files.txt) do (
    cleartool co -unreserved -c "%%k" %TARGET_VIEW%%%i
    cleartool merge -to %TARGET_VIEW%%%i %SOURCE_VIEW%%%i 
)

endlocal

pause

Оба этих сценария объединили все нужные мне файлы из исходного представления в целевое представление.

Примечания:

  • Вы можете создать командный файл, который получает SOURCE_VIEW и TARGET_VIEW в командной строке как% 1 и% 2,
  • Я разделил это на два сценария, чтобы я мог удалить некоторые файлы из список, прежде чем делать слияние.
  • Скрипты сохранят исходный комментарий к файлу.
  • % ~ dp0 - так я могу заставить работать в текущем командном файле каталог.
  • Не стесняйтесь комментировать. Если у вас есть лучшее решение, я буду рад переместить мой V к вашему: -)
0 голосов
/ 28 октября 2018

Так как это представление снимка, его извлеченные файлы доступны только в фактическом пути просмотра, а не в хранилище его представления (например, в динамическом представлении)

Если у вас есть доступ к пути представления снимка,Вы можете использовать clearfsimport, чтобы автоматически импортировать измененные / новые файлы из указанного снимка в текущий вид.

См. clearfsimport пример здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...