是否有一种简单的方法来模拟git服务器/ repo以进行单元测试?我不想测试git本身,而是我的代码如何与git交互。
我想做点什么
create git@localhost.com:myRepo.git c:/somepath
copy somefile.txt c:/somepath
然后当我
git clone git@localhost.com:myRepo.git
返回c:/ somepath(somefile.txt)的全部内容,无需身份验证。我想测试我的代码如何处理克隆,因此对这个git repo的所有调用都应该自动通过身份验证。
我查看了git守护程序,但是它运行在真正的git上,所以我的测试代码最终必须进行大量的repo内容管理(添加,提交,分支等),这似乎是不必要的。
答案 0 :(得分:1)
看起来您可以将JGit用于此目的。以下是使用它创建一个空存储库的示例,该存储库可以通过http:
连接答案 1 :(得分:0)
您可以创建自己的脚本,该脚本存在于名为' git'的本地目录中。并从那里嘲笑你想要的任何行为。
答案 2 :(得分: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...
你最初也可以制作一个裸克隆,而不是预先填充它。