Как получить список тегов, созданных в репозитории CVS?

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

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

  • Имя модуля
  • Имя ветки (или:: HEAD)
  • Дата начала
  • Конечная дата

Ответы

Ответ 1

Можно указать теги или ветки, присутствующие в модуле, используя следующую команду. Это что-то взято из другого ответа на 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 script Я разработал список всех тегов с ок. дата создания

#!/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

Ответ 2

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

cvs status -v

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

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

Ответ 3

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

cvs history -a -T

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

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

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

Ответ 4

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

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

Ответ 5

Я использую 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