A web server receive HTTP request to pull local repository
GitAgent run as a webserver. It receive command from http requests and do operation to local git repositorys.
So GitAgent let you can do git operation over http request.
With GitAgent, you can a git repository on other machine to:
- get current status
- pull latest code
- checkout branch ...
GitAgent also support execute some commant after pull success, and use a password to protect http request.
python3 -m pip install gitagent
GitAgent based on python3, and those libs was required.
- Tornado
- GitPython
- ws4py
if you use pip install GitAgent, the requirements will be install automatic.
The basic format of config.json is like this.
example_config = {
"bind_ip":"0.0.0.0",
"port":10000,
"repo":{
"self":{
"repo_path":"./",
}
},
}
If need, you can put more than one repon into it.
if you need use password, or execute command after pull, you can add some args to config file like that.
example_config_full = {
"bind_ip":"0.0.0.0",
"port":10000,
"repo":{
"self":{
"repo_path":"./",
"command":{
"cmd1":"the command 1",
"cmd2":"the command 2",
}
}
},
"password":"123456"
}
python3 -m gitagent [-c config.json] write
The default config file will by written to config.json, then you can known the config format.
if the -c arg don't gived, gitagent will write the config.json to current directory
Just edit the config file as you need
python3 -m gitagent [-c config.json] run
If you havn't see any error message, the gitagent is running.
curl -v 'http://localhost:10000/repo'
Return:
[
"demo1",
"demo2",
"demo3"
]
curl -v 'http://localhost:10000/repo/demo1'
Return:
{
{
"author": "AlexaZhou",
"busy": false,
"changed_files": {
"A": [],
"D": [],
"M": [
"agent.py"
],
"R": []
},
"dirty": true,
"hash": "c8c082d898c2dc18adb8e79f8992c074fb2294ce",
"message": "some message text",
"untracked_files": [
"config.json"
]
}
busy means the repo is processing a pull request or other action
curl -v -d 'git_branch=master&git_hash=abcdefg&command=cmd1&block=1' 'http://localhost:10000/repo/demo1/pull'
Return:
{
"ret": "success"
}
args:
- git_branch: the branch you want to checkout.
- git_hash: is a optional arg. if git_hash not given, gitagent will checkout lastest commit on the target branch
- command: is a optional arg. if command was gived, it will be execute after pull.
- block: can be 0/1, if block = 1, the request will block until the git work finish