#pike __REAL_VERSION__ |
|
string git_binary = "git"; |
|
|
constant MODE_FILE = 0100644; |
|
|
constant MODE_EXE = 0100755; |
|
|
constant MODE_SYMLINK = 0120000; |
|
|
constant MODE_GITLINK = 0160000; |
|
|
constant MODE_DIR = 040000; |
|
|
constant NULL_SHA1 = "0000000000000000000000000000000000000000"; |
|
|
Process.Process low_git(mapping(string:mixed) options, |
string git_dir, string command, string ... args) |
{ |
return Process.Process(({ git_binary, "--git-dir", git_dir, |
command, @args }), options); |
} |
|
|
string git(string git_dir, string command, string ... args) |
{ |
array(string) cmd = ({ git_binary, "--git-dir", git_dir, command, @args }); |
mapping(string:string|int) res = Process.run(cmd); |
if (res->exitcode) { |
werror("CWD: %O\n", getcwd()); |
error("Git command '%s' failed with code %d:\n" |
"%s", cmd*"' '", res->exitcode, res->stderr||""); |
} |
return res->stdout||""; |
} |
|
|
string hash_blob(string data) |
{ |
Crypto.SHA1 sha1 = Crypto.SHA1(); |
sha1->update(sprintf("blob %d\0", sizeof(data))); |
sha1->update(data); |
return String.string2hex(sha1->digest()); |
} |
|
|
|