我个人的经验: sourceforge 并不易用, 理解并且能按它的一套规则行事不是一件简单的事, 我指的是在上面开个项目. 不是仅仅下载点东西什么的.
要在上面开个项目, 必需先注册一个帐号, 这里不包括注册帐号的部分.
* 首先, 注册完帐号你会有一个 username@users.sourceforge.net 的邮件帐号, 注意, 阴谋已经开始了, sourceforge 明确说, 它不提供 POP, IMAP, SMTP等等传统邮件协议的支持, 不知道它这算是哪门子邮件, 注册这个邮件帐号之外, 你还得额外提供一个真正的邮件帐号, 比如你的163邮件地址. 这个地址用于把发到 username@users.sourceforge.net的信转发给你, 仅仅收个邮件, 你得绕过这么迂回的一个弯子
* 它提供的CVS 服务: 分两类,
一类是给普通用户用的, 用pserver协议即可, 用户名是 anonymous, 没有密码, 如果提示要密码直接回车即可. 当然访问是只读的.
另一类是给开发者的, 必需通过 ext 协议(使用ssh)才能使用, 而且还必需先生成一对key, 一公一私, 把公钥存到 shell.sf.net 你的用户目录下的 authoried_keys 文件中. 我的情况用 cygwin / ssh. 根据它网站上的帮助, 用
ssh-keygen -t dsa -C "slimzhao@shell.sf.net"
这里有一个容易出问题的地方, 命令运行之后说 key 保存在 ~/.ssh 目录下, 你用 echo ~/ 查看, 它报告用户目录是:
/c/Documents and Settings/zhao
但这个目录下却没有 .ssh 子目录.
实际保存的位置是
C:\cygwin\home\zhao\.ssh
下面, 也就是说, ssh-gen 所理解的 ~/ 目录与 bash所认为的不一样.
* Import 项目
cvs -t -d :ext:slimzhao@nethelpanywhere.cvs.sf.net/cvsroot/nethelpanywhere import -m '' -C . Slimzhao INIT
这里又要小心了, /cvsroot/nethelpanywhere 中的 nethelpanywhere 是你的项目名, sf的术语是项目的unix name, 用在很多地方, 比如你项目的主页, 新建项目后它会以此名字给你一个 CVS的主目录, 也就是 /cvsroot/nethelpanywhere, 这下面你有写权限, 如果用 /cvsroot 命令会失败, 因为没有写权限, 同时那个 . 的参数是必需的, 否则cvs import 认为命令参数不够, 因为sf已经替你建立了项目名的目录, 所以不需要再开个目录来存放源代码, 直接用"."代表当前目录.
cvs的 import 命令的后三个参数很难懂, Slimzhao是厂商tag, INIT是 release tag, 还必需指定.
* 注意你不需要运行 cvs init命令. sf已经做好了
* 登录sf提供的shell
用 putty也可以.
这里用 cygwin/bash/ssh , 注意不要被帮助里面说的必需生成 key 什么的搞晕, 那是针对你用cvs的, 用 ssh 登录一个交互式的shell 时那并不是必需的, 没有的话它会提示你要用户名密码.
在它的网站上用户配置中可以选择你希望登录的shell 类型, bash有两个, 一个是bash, 一个是bash2, 不要误以为bash就是bash 1 版本了, 它实际上是版本3(我目前的情况), bash2 这个名字几乎一定会误导你这么理解bash. 可恶!
登录 ssh之后最主要的事就是维护项目网页, 在 /home/groups/n/ne/nethelpanywhere 下, 命名规则是你的项目 unit 名先按第一个字母分类出一个目录, 再接前两个字母分类出一个子目录.
* 关于文本编辑, vim 和 emacs两大神器都提供了.
* 关于在windows/dos 下登录远程 sf主机, 切切注意终端类型, 否则仅仅用一下文本编辑器都会让你死的很难看, 如果先进bash, 再用ssh, 远程查看TERM 环境变量是 cygwin, 此时用文本编辑器没有问题.
* 在cygwin中使用 openssh
注意它的安装程序可以识别出 openssh所要依赖的其它项目, 从而会自动安装那些要依赖的项目, 但是, 它不会识别出所依赖的项目版本不足的情况, 比如我新安装的 openssh要求 openssl 的0.9.8 版本, 但系统里已经安装了 openssl 的0.9.7 版, 这样安装后的 ssh不能正确执行, 最糟糕的是, 在bash中执行这个命令, 失败时不会有任何提示, 你只能通过echo $? 知道失败, 而只有退回到 cmd.exe的提示符下运行, 才会告诉你所依赖的 cygcrypto-0.9.8.dll 不存在. 如下:
看到了吧, 第一次 ssh 命令找不到, 我跑去安装 openssh, 因为上述原因, 没有更新相应的 openssl版本, 所以第二次运行 ssh没有给我任何结果, 在cmd.exe 提示符下运行时才出现这个对话框, 这是cygwin 下程序的一个通病, 就是在 bash下运行程序时对错误三缄其口. 严重违反"没有消息就是好消息"的原则.
* 向/从远程系统 copy 文件
用 scp
用 rsync via ssh
用 ssh host "commandline" 运行一个命令
* 对 ssh 的简单理解.
不真正理解这个东西, 简单的使用可以这样: 在本地用 ssh-gen 之类的工具生成一对 key, 一公一私, 私钥保存在你自己电脑上, 公钥上传到你要登录的远程机器上, 一般是其 .ssh 目录下的一个 authorized_keys 文件中, 该文件是文本文件, 一行一个公钥, 用 file这样的工具看该文件类型时, 它会很贴心地说:
.ssh/authorized_keys: ASCII text, with very long lines
如果你从多个地点登录同一个远程系统, 比如从家里和办公室的电脑上, 可以共享同一对的key, 也可以生成多个, 生成多个时, 多对key中的公钥一行一个都放在那个 authorized_keys 文件中, 远程系统的ssh 服务器会根据你的登录名, .ssh 固定目录名和 authorized_keys 这个固定文件名找到该文件.
* 用putty的 工具也可, 但putty想文件上传/下载文件还得另开一个工具, 所以还是用 cygwin/openssh
sf 推荐都用 ssh2, 说安全得多, 另外私钥要点那个按钮保存起来, 公钥可以保存, 也可以直接 paste到 sf 提供的网页 form中去, 注意上面显示公钥的那个只读的文字框, 看着折行了, 其实是长长的一行.
Key passphrase和 Confirm passphrase可以为空.
* 明确声称不支持 telnet 和 ftp