2018/5/28

phabricator : working with svn

phabricator 跟 svn 工作的說明好像很少。
先照這一篇 試試看。
從 repository 開始...

一般會使用subversion 大概是因為舊專案。所以 repo 應該都是 monitor type。

新版只有 new repo 三種可以選, import 的 icon 結果是說明。
所以 new 一個 svn repo。
然後修改 uri,再 active 。
因為要做 monitor 用。所以 new uri,指向真正的 repo https://subversion.my.com/svn/AI/testproj/phabrisvn
選 observe。
出現 error,說有一個 uri 是 read/write,所以沒辦法設這個 uri 是 observe。
所以去外面把 原來那個自己生成的 uri disable。
然後設定這格 uri 的 Credential (這個是設定https://subversion.my.com/svn/AI/testproj/phabrisvn 的 username/password)。

因為 出現 error, 在 repo mananger 的 sync fail:
Error updating working copy: Command failed with error #1!
COMMAND
svn --non-interactive --no-auth-cache --trust-server-cert --username '********' --password '********' 
info --xml 'https://subversion.my.com/svn/AI/testproj/phabrisvn'

STDOUT




STDERR
svn: E170013: Unable to connect to a repository at URL 'https://subversion.my.com/svn/AI/testproj/phabrisvn'
svn: E230001: Server SSL certificate verification failed: certificate issued for a different hostname, issuer is not trusted
sudo su www-data -s /bin/bash
轉換身份 www-data 執行看看..
出現..
...
svn: E000002: Unable to open auth file for writing
svn: E000002: Can't create temporary file from template '/var/www/.subversion/auth/svn.ssl.server/svn-XXXXXX': No such file or directory

改 /var/www 的 owner 為 www-data,結果 su www-data 後 co OK。但是 phabricator update 還是 fail

依照說明,用
sudo /opt/phabricator/bin/repository update --trace R13
手動 update repo 'R13'。
結過還是錯。

所以用 root 來做..
sudo su - root 後, co 這個 svn repo,輸入 username/password, 並且接受 cert , server 後,
phabricator update 這格 error 消失,換出現另一個 error...

Error updating working copy: Repository "R13" does not have a correctly configured remote URI. 
The remote URI for a Subversion repository MUST point at the repository root. 
The root for this repository is "https://subversion.my.com/svn/AI", but 
the configured URI is "https://subversion.my.com/svn/AI/testproj/phabrisvn". 
To resolve this error, set the remote URI to point at the repository root. 
If you want to import only part of a Subversion repository, use the "Import Only" option.
遵照指示,在 manage repo 頁面,左邊有 subversion 這一個選項,這個選項可以輸入 目錄。
所以把 uri 改成 https://subversion.my.com/svn/AI,然後在這個 subversion 項目, 輸入 testproj/phabrisvn。
這樣 update 就沒問題了。


checkout and conduct a review

先 checkout svn repo
svn co https://subversion.my.com/svn/AI/testproj/phabrisvn
然後測試一下,arc diff..
$ arc diff
Usage Exception: This command requires arc to connect to a Phabricator install, but no
Phabricator installation is configured. To configure a Phabricator URI:

  - set a default location with `arc set-config default `; or
  - specify `--conduit-uri=uri` explicitly; or
  - run `arc` in a working copy with an '.arcconfig'.

第一次使用 arc,遵照這一篇,設定好 default phabricator server 位置
arc set-config default http://192.168.144.171
之後..arc diff 說,需要 run arc install-certificate ..
$ arc install-certificate
 CONNECT  Connecting to "http://192.168.144.171/api/"...
LOGIN TO PHABRICATOR
Open this page in your browser and login to Phabricator if necessary:

http://192.168.144.171/conduit/login/

Then paste the API Token on that page below.

    Paste API Token from that page: 
follow 這個 說明,開啟 頁面,會叫你 login,然後顯示你login user 對應的 API token 字串。
把那個字串 copy 到 command 的 ':' 後面..
接著出現:
Writing ~/.arcrc...
 SUCCESS!  API Token installed.
上面這兩個是寫在 ~/.arcrc 裡..
n$ cat ../.arcrc 
{
  "config": {
    "default": "http://192.168.144.171/"
  },
  "hosts": {
    "http://192.168.144.171/api/": {
      "token": "cli-txwsqp26sv3urka3t364xxxxxyhy"
    }
  }
}
OK,開始測試...參考這一頁subversion 的部份
修改檔案...
arc diff 提起 review ...會自動開啟 editor..
windows 10 的話,要先用..
arc set-config editor "C:\Program Files\Notepad++\notepad++.exe"
才會自動開啟 notepad++。
然後寫好 Reviewers, save退出。
reviewer 會收到通知。確認後。
arc list 列出目前狀態, OK 的話,就可以用..
arc commit 結束(commit 到 svn)


svn branch and merge

arc 沒有支援 subversion 的 branch/merge 動作。
所以都要自己做。
branch 就自己 svn cp. svn switch。
branch 也可以用 arc diff要求 review,只是 arc commit 是 commit 到 branch,main trunk 沒有影響。
merge 動作就要手動 svn merge XXOO。
然後 先用 arc diff 要求 review 後再 arc commit 把 merge 完的 code commit

沒有留言:

張貼留言