Apache的源代码存储库

Apache项目的贡献者遍布世界各地。为了帮助他们合作,项目也将其源代码保存在可访问Internet的修订控制系统中颠覆(SVN)吉特。Apache提交者有写访问权限到项目的存储库中,以便他们可以编辑现有代码并添加新文件。

目录

一般来说

注释:请查看项目代码库策略.

每个人都有读取访问权限并可以下载任何项目软件的最新开发版本进行审查或编译。

  • 如果您想要稳定的源代码版本,请从分发目录.
  • 如果您正在参与开发工作,请仅直接从项目的代码库下载代码。最新版本的代码是您的同事最近签入的代码,他们可能已经或可能没有确认它编译正确,并执行了他们希望它执行的操作。
  • 如果您想要项目编译应用程序的发布版本,请访问项目的网站并找到其下载页面。它可能提供稳定的发行版和“出血边缘”或“夜间”构建,这些构建可以正确编译,但包含最新的、可能不稳定的功能。

Git存储库

如何使用Git进行修订控制的指南、文档和项目列表位于git.apache.org网站.

许多Git用户通过以下工具之一管理其源代码:

一些项目开始使用只读错误当Apache对Git的支持受到限制时,SVN存储库的数量会增加。这不再是必要的。可写Git存储库可用于所有项目。

创建存储库

Apache项目可以有公众的Git存储库作为其产品开发工作所需。使用自助工具以创建附加存储库。

一些项目需要私有的Git存储库,原因如下:

  • 开发安全补丁。
  • 当需要在<私人>报告的第节。
  • 维护与第三方签订的法律合同、谅解备忘录(MOU)和类似安排的详细信息。如果项目管理委员会对项目产品的开发有直接要求,则可以签订此类安排。
  • 保存不应公开的信息。

每个PMC可以有私有Git存储库。为Infra开一张Jira罚单以申请一张,解释项目需要它的原因。

用于Git存储库的.asf.yaml

.asf.yaml文件是特定于分支的文件。在Git存储库中托管其网站的项目必须使用.asf.yaml文件建立和更新他们的网站。审查此文档在使用您的.asf.yaml文件文件夹。

项目还可以放置.asf.yaml文件在存储库的根目录中控制:

  • 通知设置
  • github设置
  • 鹈鹕建筑

阅读asf.yaml底漆了解更多信息。

SVN存储库

有关SVN的信息,请访问Apache SVN站点带Subversion的版本控制。该网站提供以下链接:SVN客户端您可以下载并安装,以便更轻松地使用SVN。

要浏览存储库或下载几个单独的文件,您可以

命令行SVN访问

安装SVN客户端后,可以匿名签出项目存储库。例如,要获取Spamassassin模块,请使用:

$svn结账http://svn.apache.org/repos/asf/spamasassin/trunk斯帕马萨森

通过命令行提交代码

如果您是一个项目提交者,不想使用像Tortoise这样的SVN客户端,可以使用命令行提交新的和更新的文件。我们使用HTTPS基本身份验证,因此您需要在签入命令中指定用户名和密码。

例如,如果您想添加文件“test.txt”,可以执行以下步骤:

$cd excalibur-trunk光盘$echo“test”>测试.txt$svn添加test.txt$svn commit--用户名your-name--密码your-password\--消息“正在试用svn”

Apache不支持svnserve服务器svn+ssh.

配置SVN客户端

提交者需要正确配置其svn客户端。一个特殊的问题是文本文件的特定于操作系统的行填充。当您添加一个新的文本文件时,尤其是从Bugzilla应用补丁时,请确保行式适合您的系统,然后执行(对于test.txt)

svn add test.txt svn属性集svn:eol-style原生测试.txt

您可以将svn客户端配置为针对某些常见文件类型自动执行此操作。添加的内容这个文件位于~/.subversion/config文件的底部,通常位于:

  • Windows:C:\Documents and Settings{用户名}\Application Data\Subversion\config
  • Windows 7:C:\Users{username}\AppData\Roaming\Subversion\config]
  • Linux和Mac OSX:~/.subversion/config或/etc/subversion/config

您可能需要为某些文件设置其他属性。例如,应用svn:可执行文件=*要执行的脚本文件(例如.bat、.cgi、.cmd、.sh)。由于并非所有这些文件都要执行,因此不要将可执行属性设置为自动默认值。

当您执行“svn提交”时,请注意来自svn客户端的消息。

提示:如果您使用TortoiseSVN,一个与Windows资源管理器集成的流行Windows GUI客户端,您可以右键单击资源管理器并选择TortoiseSVN-设置,然后按“编辑”按钮更新您的“子版本配置文件:”。如果你看不到

*.c=svn:eol-style=本机

将上述svn-eol-style.txt文件的内容复制到出现的配置编辑器的末尾,然后保存该文件。

SVN SSL服务器证书

您可以在上检查服务器证书的有效性Apache主机密钥列表.

典型SVN错误消息

验证服务器证书时出错

-证书不是由受信任的颁发机构颁发的。使用指纹以手动验证证书!证书信息:-主机名:*.apache.org-有效期:自2017年4月20日00:00:00 GMT至2019年7月20日23:59:59 GMT-发行人:SSL.com-SHA-1指纹2D:97:67:D9:2E:20:EE:07:3D:26:DA:97:A6:43:36:5F:71:8E:94:19(R) 临时退出、接受(t)还是永久接受(p)?

根据上面链接中的列表检查指纹以获取服务器证书。

无此类修订

如果出现如下错误

svn:无此类修订765287

这可能是因为Subversion镜像之间的同步存在短暂延迟,如果快速连续运行多个提交,则可能会发生这种情况。如果您位于欧洲,或明确使用欧洲镜像,则通常会发生此错误。

等待10秒钟,然后重复该命令,您应该会成功。

注释运行时也可能发生此错误mvn版本:准备。mvn发布插件有一个特殊属性来处理这种情况:等待前标记.

不是最新的基线

如果出现这样的错误:

svn:指定的基线不是最新的基线,因此可能不是已结账。

这可能是因为子版本镜像之间的同步存在短暂的滞后,如果多个提交快速连续运行,则可能会发生这种情况。如果您位于欧洲,或明确使用欧洲镜像,则通常会发生此错误。

等待10秒钟,然后重复该命令,您应该会成功。

使用日期修订时出现的问题

如果您使用的是日期修订,例如-r{2004-09-12}:{2004-08-12}并且没有得到您期望的任何或所有修订,这是ASF存储库特有的已知问题。

不幸的是,无法采取任何措施来改善这种情况,因此您必须使用变通方法。你可以使用svn日志或ViewVC查找您希望的日期之后的第一个实际修订号,并将其替换为您的-第页svn命令的参数。

例如,考虑所需的命令:

$svn diff-rHEAD:{2005-01-01}

虽然这不会产生任何结果,但运行svn日志单独产生这样的结果:

------------------------------------------------------------------------r124032|aheritier|2005-01-04 09:58:16+1100(2005年1月4日,星期二)|1行切换到subversion------------------------------------------------------------------------r123911|brett|2005-01-03 09:48:57+1100(2005年1月3日,星期一)|1行删除名古屋参考------------------------------------------------------------------------r116173|brett|2004-10-23 22:11:51+1000(2004年10月23日,星期六)|2行删除旧的需要说明

因此,请尝试以下命令:

$svn diff-r头:123911

由于修订的顺序与存储库中日期的顺序不同,所以会出现此问题。这是加载带有历史记录的CVS存储库的副作用,包括Subversion存储库中最早日期之前的日期。

SVN常见问题解答

  • 我应该什么时候使用svn锁?很少。subversion中的提交是事务性的。这意味着锁几乎总是不必要的。一个经常引用的用例是防止并发编辑大型的、不可合并的二进制文档。然而,对于开放式开发,即使在此用例中,良好的通信也比锁定更好。一个好的、及时的发布到列表中,让你的开发人员知道你将开始编辑那个巨大的PDF,这比锁定文件要好。
  • 我多久可以运行一次连接到存储库的cron作业?每小时都可以。请不要使用轮询存储库的频率超过每小时一次的程序。运行不断轮询存储库的自动脚本的人最终会被拒绝访问,这可能会影响通过同一主机连接的其他人。如果您需要保持比每小时cron所允许的更多的同步,请将脚本订阅到相关的提交邮件列表。
  • 如何为实验镜像整个SVN存储库?首先,问问自己是否真的想要整个ASF存储库大多数人真的只想要一个项目。在这种情况下,只需从repo中检出该源目录即可。如果您确实想要整个ASF存储库,请不要使用svnsync。相反,从寻找在这里。用它来引导回购。
  • 为什么在尝试提交代码时会出现403错误?运行获取当前检出的版本信息并检查URL是否以开头https(https)://。如果以开头网址://,运行:

$svn开关--重新定位http://svn.apache.org https://svn.apache.org

如果仍然出现403个禁止的错误,请让PMC仔细检查authz文件和LDAP/Unix组成员身份。

将SVN代码存储库迁移到Git

说明如下在这里.

版权所有2024,Apache软件基金会,根据Apache许可证,2.0版.
Apache®和Apache羽毛徽标是Apache软件基金会的商标。