我正在尝试使用Phabricator的代码审查功能来评定班级中学生提交的代码。代码将提交给Subversion服务器,其中每个学生在服务器上的顶级位置下都有自己的文件夹。对于当前的类,我无法控制根位置。如果我这样做,我会移动它,所以有一个文件夹,其中包含我所需要的所有类的学生存储库,并在该文件夹中创建一个repo,并从较低的分支区域进行区分,但此时我不能。
我找到了一种方法,可以从命令行中完成Phabricator中我需要做的几乎所有事情,例如创建每个学生用户并生成差异。只有一件事我无法弄清楚如何做:创建一个存储库。
我查看了Phabricator和Arcanist帮助中的选项,但我没有看到任何似乎做我需要的东西。
有没有人知道是否可以从Phabricator或arc命令行创建存储库?或者以其他一些自动方式?
谢谢!
答案 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}}的网页用户界面中找到。