ClearCase 标签文件的父文件夹

ClearCase label parent folders of a file

对于给定的文件路径,如何标记所有父文件夹直到 VOB 级别?

例如文件路径:\VOB1\dir1\subdir1\moredir1\file1.xml

我想用 LABEL1 标记以下元素:

\VOB1\dir1\subdir1\moredir1\file1.xml
\VOB1\dir1\subdir1\moredir1
\VOB1\dir1\subdir1
\VOB1\dir1

使用mklabel命令,简单易行:

cleartool mklabel LABEL1 \VOB1\dir1\subdir1\moredir1\file1.xml \VOB1\dir1\subdir1\moredir1 \VOB1\dir1\subdir1 \VOB1\dir1

但是,我希望智能地计算路径。

mklabel -rec 的参数不适合此用途,因为顶级父文件夹可能包含许多其他 files/dirs。

有什么想法吗?

因为没有获取父文件夹列表的本机方法(除非 cleartool lsfolder -ancestor 有效),您只需 'cd ..' 直到 mklabel 失败(这意味着您在 vob 之外)

cleartool mklabel LABEL1 . || exit
cd ..

在bash中:

while true; do cleartool mklabel LABEL1 . || exit; cd ..; done
@echo off
setlocal EnableDelayedExpansion

set "filePath=\VOB1\dir1\subdir1\moredir1\file1.xml"
set "wantedParent=VOB1"

set "thisPath="
set "labelPaths="
set "labelThisPath="
if "%filePath:~0,1%" equ "\" set "filePath=%filePath:~1%"
for %%a in ("%filePath:\=" "%") do (
   set "thisPath=!thisPath!\%%~a"
   if defined labelThisPath (
      set "labelPaths=!thisPath! !labelPaths!"
   ) else if "%%~a" equ "%wantedParent%" (
      set "labelThisPath=true"
   )
)

ECHO cleartool mklabel %labelPaths%

输出:

cleartool mklabel \VOB1\dir1\subdir1\moredir1\file1.xml \VOB1\dir1\subdir1\moredir1 \VOB1\dir1\subdir1 \VOB1\dir1