Как получить список тегов, созданных в хранилище CVS? - PullRequest
18 голосов
/ 30 мая 2011

Существуют ли какие-либо команды CLI, которые можно использовать для получения списка тегов, которые были созданы в ветви или заголовке модуля в течение определенного периода времени?

Вкратце мне нужен список тегов и дата их создания. Даны следующие параметры

  1. Имя модуля
  2. Название филиала (или :: HEAD)
  3. Дата начала
  4. Дата окончания

Ответы [ 5 ]

21 голосов
/ 15 августа 2013

Я только что узнал:

cvs status -v

Перечисляет все теги и ветки для каждого и любого файла вместе с ревизией, к которой он принадлежит.

Вы могли бы работать оттуда ...

14 голосов
/ 31 мая 2011

Можно перечислить теги или ветви, присутствующие в модуле, используя следующую команду.Это что-то взято из другого ответа на SO

Чтобы отобразить все теги:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)!=0{print $1}' | sort -u

Чтобы отобразить все ветви:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -h *Module*| awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u

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

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

Примерно так:

cvs -Q -d :pserver:*User*:*Pass*@*HostName*:/cvsroot rlog -N -S -r*TagName* *Module* | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //'

Это скрипт bash Iразработано, чтобы дать список всех тегов с их ок.дата создания

#!/bin/bash

CVSROOT=$1
PROTOCOL=$2
LOGIN=$3
PASSWORD=$4
MODULE=$5
REVISION=$6
OUTPUT=$7

CVS_HOST=""
if test "${PASSWORD:-t}" != "t" ; then
    CVS_HOST=":${PROTOCOL}:${LOGIN}:${PASSWORD}@${CVSROOT}"
else
    CVS_HOST=":${PROTOCOL}:${LOGIN}@${CVSROOT}"
fi

CVS_REVISION=""
if test "${REVISION:-t}" != "t" ; then
    CVS_REVISION="-r${REVISION}"
fi

echo "\"Tag Name\",\"Create Date\"" > ${OUTPUT}

echo "EXEC: cvs -Q -d ${CVS_HOST} rlog -h -S ${CVS_REVISION} ${MODULE} | awk -F"[.:]" '/^\t/&&\$(NF-1)!=0{print \$1}' | sort -u"
cvs -Q -d ${CVS_HOST} rlog -h ${CVS_REVISION} ${MODULE} | awk -F"[.:]" '/^\t/&&\$(NF-1)!=0{print $1}' | sort -u | while read tagName
do
    #get approx create date
    echo "EXEC: cvs -Q -d ${CVS_HOST} rlog -N -S -r$tagName ${MODULE} | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //'"
    date=`cvs -Q -d ${CVS_HOST} rlog -N -S -r$tagName ${MODULE} | grep ^date: | sort | tail -1 | cut -d\; -f1 | sed -e 's/date: //'`

    #Save to output file
    echo "\"$tagName\",\"$date\"" >> ${OUTPUT}
done
4 голосов
/ 01 июня 2011

Если у вас включена функция истории, вы можете выполнить следующую команду:

cvs history -a -T

Она выдаст вам несколько строк, например, с указанием даты + времени, пользователя, модуля и тэга каждого тега.операция:

T 2011-04-02 07:55 +0000 ralph  mylib [testtag:A]

Для получения дополнительной информации обратитесь к cvsbook по истории

3 голосов
/ 30 мая 2011

CVS не может этого сделать, это слишком примитивно. Теги прикрепляются к отдельным версиям файла, а не к модулю или хранилищу. Кроме того, у тегов нет метаданных даты, поэтому вы также не можете сказать, когда они были созданы.

Таким образом, ни один из указанных критериев выбора не может быть использован. Единственный критерий, который вы можете использовать, - это конкретный версионный файл, который сообщит вам, какие ревизии имеют какие теги, но это все.

0 голосов
/ 12 июля 2019

Я использую Cvs Repository, используя cvsnt (установка) ..

Запросы:

1) Я хочу только список имен тегов из cvs.

2) Как создать репозиторий с помощью cvsnt.

3) Как зарегистрировать весь модуль в новом хранилище.

Я пробую Пример:

1) при попытке создать новый репозиторий

cvs -d :pserver:<user>@<host>:<new_repository> init

2) Модуль импорта в хранилище

cvs -d repository_path import name_of_project vendor_tag release_tag
...