web-dev-qa-db-ja.com

CVSリポジトリで作成されたタグのリストを取得するにはどうすればよいですか?

指定された時間枠内にモジュールのブランチまたはヘッドに作成されたタグのリストを取得するために使用できるCLIコマンドはありますか?

私が簡単に必要なのは、タグのリストとタグが作成された日付です。次のパラメータが与えられた場合

  1. モジュール名
  2. ブランチ名(または:: HEAD)
  3. 開始日
  4. 終了日
19
Salman A. Kagzi

次のコマンドを使用して、モジュールに存在するタグまたはブランチを一覧表示できます。これは 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

これは、マジックブランチ番号を使用して、シンボリックリンクがブランチまたはタグであることを識別します。

このページの回答の1つでskaffmanが述べたように、タグが作成された日付を判別することはできません。最善の方法は、そのタグのログにリストされている最新の日付を考慮して、おおよその日付を識別することです。

このようなもの:

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スクリプトです。作成日

#!/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
14
Salman A. Kagzi

私はたった今学んだ:

cvs status -v

各ファイルのすべてのタグとブランチを、ファイルが属するリビジョンとともに一覧表示します。

あなたはそこから働くことができます...

21
Thomas

履歴機能を有効にしている場合は、次のコマンドを実行できます。

cvs history -a -T

次のような行が表示され、各タグ付け操作の日付と時刻、ユーザー、モジュール、タグ名が表示されます。

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

詳細については、 履歴に関するcvsbook を確認してください。

4
Ralph

CVSはそれを行うことができません、それはあまりにも原始的です。タグは、モジュールやリポジトリではなく、個々のファイルリビジョンに添付されます。さらに、タグには日付のメタデータがないため、タグがいつ作成されたかもわかりません。

したがって、指定した選択基準はどれも使用できません。 can使用する唯一の基準は、特定のバージョン管理されたファイルです。これにより、どのリビジョンにどのタグが付いているかがわかりますが、それだけです。

3
skaffman

私はcvsnt(install)を使用してCvsリポジトリを使用しています..

クエリ:

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
0
Gopi Nath