2015-10-19 135 views
3

有沒有簡單的方法來模擬git服務器/回購單元測試的目的?我不想測試git本身,而是我的代碼如何與git交互。模擬git回購測試

我想這樣做

create [email protected]:myRepo.git c:/somepath 
copy somefile.txt c:/somepath 

,然後當我

git clone [email protected]:myRepo.git 

C的全部內容:返回/ somepath(somefile.txt),無驗證需要。我想測試我的代碼如何處理克隆,因此所有對此git repo的調用都應該自動通過身份驗證。

我看着git守護進程,但它運行在真正的git上,所以我的測試代碼最終必須做很多回購內容管理(添加,提交,分支等),這似乎沒有必要。

回答

0

您可以創建自己的腳本,該腳本存在於名爲'git'的本地目錄中,並從那裏剔除您想要的任何行爲。

+0

我需要模擬https://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols我猜。希望對此有一個模擬已經存在.. –

0

你並不需要一臺服務器克隆。它將在一個普通的目錄上工作。

建立一個倉庫。

$ git init /path/to/repo 

把一些東西放在裏面。

$ cd /path/to/repo 
$ touch foo bar 
$ git add . 
$ git ci 
[master (root-commit) 3c99023] Some files. 
2 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 bar 
create mode 100644 foo 

克隆它。

$ git clone /path/to/repo /path/to/clone 
$ cd /path/to/clone 
$ ls 
.git bar foo 

注意,git會不喜歡它,如果你推到一個非純倉庫,所以你可能想使轉向/path/to/repo成純倉庫的中間步驟。最簡單的方法是製作一個裸露的克隆,並將其用於其他所有克隆。

$ git clone --bare /path/to/repo /path/to/upstream 
$ git clone /path/to/upstream /path/to/clone 
...use /path/to/clone as normal pushing to /path/to/upstream... 

你也可以最初做一個裸克隆,而不是預填充它。