如何在没有初始检出的情况下列出CVS中的文件?

25

如何在没有初始检出的情况下列出CVS中的文件?

在Subversion中,我可以简单地执行“svn ls http://svn.svn.com”,那么在CVS中我该怎么做呢?

例如,我有这个CVS连接:

 pserver:anonymous@evocms.cvs.sourceforge.net:/cvsroot/evocms

我该如何列出其中的所有文件?

更新:

我正在尝试这样做:

c:\>set CVSROOT=pserver:anonymous@evocms.cvs.sourceforge.net:/cvsroot/evocms
c:\>cvs -list ---> doesn't work, prints out the help screen

嘿,你试过Franek的答案了吗?https://dev59.com/x3NA5IYBdhLWcg3wn_U1#2070969 在这里它完美无缺地工作! - Somebody still uses you MS-DOS
8个回答

36
如果它是一次性操作,您不需要设置CVSROOT环境变量。只需使用-d参数进行即席存储库指定。
如果您的CVS / CVSNT版本不太旧(确切地说,您需要CVS 1.12.8或更高版本或CVSNT),那么像其他人所说的,在登录后
cvs ls

"应该可以正常工作。 如果您使用的CVS/CVSNT版本不支持“ls”命令,则可以尝试"
cvs checkout -c

这将仅转储预定义模块列表。

如果您的CVS/CVSNT版本足够旧,您可能会通过以下黑客方式获得好运(除非在服务器上启用了兼容性模式,否则不适用于更近期的CVSNT版本):

首先,将存储库的根目录检出到某个临时位置,以便我们具有必要的元数据:

cvs -d[your CVSROOT string] co -l -dTemp .

然后模拟更新该文件夹(包括目录)。
cd Temp
cvs -n up -d

这将生成(几乎)与实际检出相同的输出,而不必从服务器获取文件。
如果您使用较新版本的 CVSNT 作为客户端,并且正在 Windows 上运行,则当检测到不支持 `ls` 的服务器时,`cvs ls` 将自动回退到此机制。

哦,是的,据我所知,不存在cvs -list这样的东西。它甚至不是有效的CVS命令行语法:-list必须是全局参数而不是指令,因为它直接跟在cvs后面,没有实际的指令被指定。但是,所有多字母参数(如--help)都必须以双破折号开头,例如cvs --version。你们也许在想cvs list,它只是cvs ls的别名吧?


根据版本号,我认为那个应该没问题。我自己使用的是CVSNT 2.5.04(不幸的是,它似乎已经无法从原始来源获取 - 现在已被某些半商业产品取代)。此外,我假设您在客户端上使用的是这个而不是服务器上的?您还没有写任何关于设置了CVSROOT并登录后执行cvs ls时会发生什么的内容。 - Oliver Giesen
更正:CVSNT 2.5.04仍可从http://cvsnt.org免费下载 - 只是他们使下载链接有些隐晦 - 在页面右边框附近搜索 - 请注意,用户数据字段均为自愿提供。 - Oliver Giesen
好的,另一个更正:CVS 1.11.x确实不支持ls命令。你需要至少CVS 1.12.x才能使用该命令。此外,请注意,即使对于CVS 1.11.x,你发布的下载链接也是非常旧的版本(1.11.14 - 最新版本应该是1.11.23)。 - Oliver Giesen
那没用。结果一样。我正在尝试下载这个CVSNT,但所有链接都指向客户端试用版本。是的,我只使用客户端。 - dr. evil
2
当我尝试执行“cvs ls”命令时,出现了一个错误,说服务器不支持它。使用“cvs -d [您的CVSROOT字符串] co -l -d Temp .”与“cvs -n up -d”结合使用对于我所需的功能足够好。 - Chad Gorshing
显示剩余2条评论

16
cvs -d $CVSROOT rls
希望这能有所帮助(cvs版本1.12.13)。

3

这是我使用的内容。msolorzano是我的登录名和密码,“Deployer”是模块名称:

cvs -d :pserver:msolorzano:password@gtess-cvs:/cvsdata/data1 rlog -R Deployer

事实上,如果您在UNIX/Linux环境下执行命令,您可以以“清晰可读”的方式查看文件的CVS列表,方法如下:

cvs -d :pserver:msolorzano:password@gtess-cvs:/cvsdata/data1 rlog Deployer | grep  ',v' | sed 's/RCS file: //g' | sed s/,v//g

3
你需要先进行登录,方法如下:点击这里

cvs -d :pserver:anonymous@evocms.cvs.sourceforge.net:/cvsroot/evocms login

然后,像其他人所说的那样,使用 ls 命令

如果需要了解背景信息,请参阅远程存储库的讨论


现在我明白了,我认为问题出在我的电脑上,-d 没有设置环境变量,不知道为什么。 - dr. evil
我正在执行以下操作: "c:>set cvsroot=:pserver:anonymous:@evocms.cvs.sourceforge.net:/cvsroot/evocms" "c:>cvs -list" ->> 无法工作。 - dr. evil
你尝试过使用cvs -list pserver:anonymous@evocms.cvs.sourceforge.net:/cvsroot/evocms吗? - JeffH

2

在cvs中有一个类似的命令。

用法:cvs ls
cvs -list用于列出模块,ls用于列出模块的内容。

编辑:他们是正确的,命令list和ls是相同的,对此我感到抱歉。

嗯,我真的看不到如何在不检出它的情况下列出cvs目录。

您正在尝试访问的存储库是否具有cvsweb访问权限?


尝试将CVSROOT参数设置为环境变量,这是我使用的方法,这样每次都不必通过完整的字符串传递。不过我从未尝试过ls。 - Decio Lira
我也尝试过那个方法,但似乎也不起作用,详见我在问题中的更新。也许我漏掉了什么。 - dr. evil
你使用的是哪个版本的CVS?在我所知道的任何版本中,-list参数都不存在。 - Oliver Giesen
请参考simon622的回答中的讨论。实际命令为“cvs list”(不带破折号),它只是“cvs ls”的一个别名,也就是说,“cvs list”和“cvs ls”之间绝对没有任何区别。 - Oliver Giesen

0

大家好,

这里提供了一种全面的做法:

  1. 启动命令提示符
  2. 复制此代码 cvs -d CVSROOT login(或者,任何您对应的 CVSROOT)
  3. 在提示时输入密码并按回车。可能需要一些时间,但完成后将出现新提示。
  4. 输入 cvs –d cvs -d CVSROOT ls
  5. 看到了吗!这就是您的清单列表

请记住,如果您没有定义 CVSROOT,则可以在此处复制和粘贴自己的 CVSROOT。


我无法在包含“:ext:”协议的CVSROOT上使其工作。CVS抱怨只接受“pserver”,但我似乎在工作中没有pserver访问权限 :-( - Big Rich

0

cvs -d [CVS_ROOT] rlog {module_name}


rloglog类似,列出的是版本记录,而不是文件列表。 - Keith Thompson

0

3
大家,你们为什么要不停地发布这个?这个参数根本不存在!而且这根本不是有效的CVS命令语法! - Oliver Giesen
1
它作为一条命令而非参数存在,使用“cvs list”将列出服务器上的模块。 - simon622
1
好的,我现在已经猜到了。这会起作用,因为“list”只是“ls”的同义词。请参阅“cvs --help-synonyms”。 - Oliver Giesen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接