Как удалить элемент с именем «-c» из ClearCase

При создании некоторых каталогов в ClearCase я «забыл», что порядок аргументов имеет значение. Я добавил несколько таких каталогов:

cleartool mkdir a b -c "Some comment"

Когда меня попросили прокомментировать каталоги, я понял, что аргумент '-c' был не в том месте, но предположил, что все будет в порядке, поэтому ввел Some comment еще дважды (для a и b отдельно). Затем меня попросили дать комментарий для элемента '-c', и я нажал Ctrl-C для команды.

Однако теперь cleartool ls показывает элементы a, b и '-c'.

Я не могу удалить элемент '-c'. Я пробовал следующее:

cleartool rmelem "-c"   #fails, assumes the -c is the comment argument
cleartool rmelem -c "comment" -c
cleartool rmelem -c "comment" "-c"
cleartool rmelem -c "comment" ^-c    #Running on Windows, so tried Windows escape
cleartool rmelem -c "comment" \-c    #CC mimics UNIX, so tried UNIX escape
cleartool rmelem -c "comment" ^\-c   #CC mimics UNIX, but running thru Windows, so tried escaping the UNIX escape.

Все терпят неудачу, говоря либо Illegal duplicate use of flag "-c[omment]" (если не сбежали), либо Unable to access ... (если сбежали).

Еще одна странность. Если бы я попробовал одинарные кавычки, ct предполагал, что ' был частью имени элемента:

> cleartool rmelem -c "Removing element '-c'" '-c'
cleartool: Error: Pathname not found: "'-c'".

person GKelly    schedule 06.12.2011    source источник


Ответы (2)


Используйте -- разделитель между опциями и аргументами.

См. раздел Удаление объектов ClearCase, имя которых начинается с дефиса.

Чтобы удалить объект ClearCase (представление, VOB, элемент или другие объекты ClearCase) с предшествующим символом дефиса (-), выполните команду cleartool с аргументом, состоящим из двойного дефиса, чтобы предотвратить интерпретацию cleartool имени как опции.

cleartool rmelem -- -t1.txt
person VonC    schedule 06.12.2011
comment
Спасибо. Я чувствовал, что это будет что-то простое. Просто у меня не хватает знаний ClearCase. - person GKelly; 06.12.2011
comment
@GKelly: на самом деле это соглашение гораздо шире, чем просто для ClearCase: см. stackoverflow.com/questions/1192180/ - person VonC; 06.12.2011

Поскольку это элемент, в качестве альтернативы вы можете сыграть обычный трюк «добавить ./ впереди», который является распространенным ответом на такие вопросы, как «как удалить файл с именем -f» или аналогичный, например. cleartool rmelem ./-c, без какой-либо конкретной поддержки со стороны cleartool с --, как уже упоминалось VonC. С другой стороны, это потребуется для удаления ветки с именем -c.

person hlovdal    schedule 06.12.2011
comment
Что я собственно и сделал в итоге. Тем не менее, я принял ответ VonC, поскольку он объяснил несколько подходов и дал ссылку на соответствующую страницу. Спасибо - person GKelly; 07.12.2011