用于创建存储库的phabricator命令行

时间:2014-01-11 01:31:40

标签: phabricator

我正在尝试使用Phabricator的代码审查功能来评定班级中学生提交的代码。代码将提交给Subversion服务器,其中每个学生在服务器上的顶级位置下都有自己的文件夹。对于当前的类,我无法控制根位置。如果我这样做,我会移动它,所以有一个文件夹,其中包含我所需要的所有类的学生存储库,并在该文件夹中创建一个repo,并从较低的分支区域进行区分,但此时我不能。

我找到了一种方法,可以从命令行中完成Phabricator中我需要做的几乎所有事情,例如创建每个学生用户并生成差异。只有一件事我无法弄清楚如何做:创建一个存储库。

我查看了Phabricator和Arcanist帮助中的选项,但我没有看到任何似乎做我需要的东西。

有没有人知道是否可以从Phabricator或arc命令行创建存储库?或者以其他一些自动方式?

谢谢!

3 个答案:

答案 0 :(得分:7)

我们现在没有一种非常简单的方法可以执行此操作,但您可以使用arc来调用Conduit API。将JSON blob管道输入:

echo '{"name":"repo name", ...}' | arc call-conduit repository.create

您可以在网络用户界面上访问/conduit/method/repository.create/,获取该电话接受的参数列表。

答案 1 :(得分:1)

因为我有一个带VCS服务器(HG)的VM1和另一个带Phabricator的VM2,所以我做了简单的scrtip以便从VCS中的命令行存储库制作并在Phab中创建链接存储库。 那是脚本的核心:

#!/bin/bash
REPO=$1
new_URI="http://vcs.domain.com/"$1

create_phab_repo() {
curl http://phabricator.domain.com/api/diffusion.repository.edit \
    -d api.token=api-blablablabla \
    -d transactions[0][type]=vcs \
    -d transactions[0][value]=hg \
    -d transactions[1][type]=name \
    -d transactions[1][value]=$REPO
}


add_phab_repo_URI() {
curl http://phabricator.domain.com/api/diffusion.uri.edit \
    -d api.token=api-blablablabla \
    -d transactions[0][type]=repository \
    -d transactions[0][value]=$2 \
    -d transactions[1][type]=uri \
    -d transactions[1][value]=$new_URI \
    -d transactions[2][type]=io \
    -d transactions[2][value]=observe
}


activate_phab_repo() {
curl http://phabricator.domain.com/api/diffusion.repository.edit \
        -d api.token=api-blablablabla \
        -d transactions[0][type]=status \
        -d transactions[0][value]=active \
        -d objectIdentifier=$1
}

..........

content=$( create_phab_repo | jq -r '.result.object.phid' )

repo_phid=$( curl http://phabricator.domain.com/api/diffusion.repository.edit -d api.token=api-blablablabla -d transactions[0][type]=vcs -d transactions[0][value]=hg -d transactions[1][$REPO | jq -r '.result.object.phid')

add_phab_repo_URI $1 ${repo_phid}

activate_phab_repo ${repo_phid}

希望这对某人有帮助

答案 2 :(得分:0)

更新到Evan Priestley的回答:API方法已更改为diffusion.repository.edit

开发人员文档解释了如何创建和激活存储库here。从该文件中复制:

创建一个回购:

$ echo '{
  "transactions": [
    {
      "type": "vcs",
      "value": "git"
    },
    {
      "type": "name",
      "value": "Poetry"
    }
  ]
}' | arc call-conduit diffusion.repository.edit

使用第一个响应中的事务ID设置远程URL(如果需要):

$ echo '{
  "transactions": [
    {
      "type": "repository",
      "value": "PHID-REPO-7vm42oayez2rxcmpwhuv"
    },
    {
      "type": "uri",
      "value": "https://github.com/epriestley/poems.git"
    },
    {
      "type": "io",
      "value": "observe"
    }
  ]
}' | arc call-conduit diffusion.uri.edit

激活回购:

$ echo '{
  "objectIdentifier": "PHID-REPO-7vm42oayez2rxcmpwhuv",
  "transactions": [
    {
      "type": "status",
      "value": "active"
    }
  ]
}' | arc call-conduit diffusion.repository.edit

所有有效参数的列表可在{1}}的网页用户界面中找到。