项目

常规

配置文件

操作

使用Git为Redmine做出贡献

此维基已过时.

Redmine的源树存储在Subversion中,所有内容最终都会输入其中。有些人喜欢使用Git,因为它具有分支和合并功能,并且不需要SVN提交权限即可提交。

注意:complete.org上的git仓库没有更新,截至本文撰写时,最后一次更改是在2008年9月8日星期一。推荐克隆GitHub镜像以获取最新的开发工作。

如果您正在寻找Subversion说明,它们可以在下载检出页面找到。

初始化

如果您还没有Git,请参阅以下链接中的5分钟Git指南以获取下载信息。您需要至少1.5.x版本的Git。
要开始,请运行以下命令

git clone git://git.complete.org/branches/redmine-integration
cd redmine-integration
git config --add remote.origin.fetch +refs/remotes/svn/*:refs/remotes/svn/*
git fetch

探索

您可以看到Git为您获取的所有分支

git branch -r | less

您会看到这样的输出(这里省略了很多行)

  origin/HEAD
  origin/fb-bug-259-git
  origin/fb-bug-261-issue-redirect
  origin/fb-bug-641-context-done
  svn/git
  svn/issue_relations
  svn/mailing_lists
  svn/tags/0.6.3
  svn/tags/0.6.3@1011
  svn/time
  svn/trunk
  svn/wiki

"origin"分支由Git维护(没有对应的Subversion分支)。"svn"分支是Redmine Subversion仓库中相同分支的相同副本。

您将基于这些分支进行工作。

开始您的功能

使用git,分支成本低且合并容易,因此您通常希望为每个正在工作的功能创建一个新的分支。提交补丁时,单个分支可能对应Redmine中的一个单独的问题。

您希望补丁基于svn trunk。因此,您将设置一个分支如下

$ git branch my-feature svn/trunk
Branch my-feature set up to track remote branch refs/remotes/svn/trunk.
$ git checkout my-feature

第一行创建了一个名为my-feature的分支,它将基于svn/trunk。第二个命令检出该分支,这意味着您的工作副本已切换到它,并且您所做的任何提交都将发布到该分支。

请注意,提交操作不会将补丁发送给任何人;因为Git是分布式的,提交仅在本地记录,直到您准备好将它们推送到上游。

您可以使用git branch查看您所在的分支--它旁边会有一个星号,如下所示

$ git branch
  master
* my-feature

在您的功能上工作

现在您已经创建了分支,是时候开始工作了。

以下是一些您可能想要使用的命令

任务 命令
提交未决更改 git commit -a
将新文件添加到仓库 git add filename
从仓库和工作目录中删除文件 git rm filename
在仓库和工作目录中重命名文件 git mv oldname newname
查看历史 git log
获取帮助 git commandname --help

注意,git commandgit-command 相同。您可以使用 man git-command 查看任何Git命令的手册页面。

与主干合并

如果您已经针对您的功能工作了一段时间,您可能会发现Subversion已经更新了。理想情况下,您希望您的最终差异与最新的主干修订版兼容,因此您希望您的补丁与该修订版兼容。要更新您的补丁以应用在最新的主干之上,请执行以下操作

git fetch
git rebase svn/trunk

提交您的补丁

当您完成补丁的工作后,请确保您已经将其提交到Git。然后您可以生成差异。

您可以生成一个大的差异,包括您在分支上所做的所有更改,即使它们是在多个提交中完成的。运行以下命令

git diff svn/trunk..HEAD > /tmp/feature.diff

这意味着“计算主干与该分支最新提交之间的差异,并将其存储为位于 /tmp/feature.diff 的差异”。然后转到 redmine.org,创建一个问题,并将 /tmp/feature.diff 附加到该问题。

如果您希望为每个提交提交一个补丁,只需运行 git format-patch svn/trunk。您将为每个提交生成一个文件,其中包括提交日志。然后您将想要在 redmine.org 附加这些文件。不过,通常您希望有一个大的差异。

外部链接

由 Toshi MARUYAMA 更新 超过12年前 · 10次修订