2015-10-19 141 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... 

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