Add git reset --hard support to git module

Resets working tree to what is in HEAD and discards any
uncommitted changes.
pull/300/head
Stephen Fromm 13 years ago
parent 40dbd9b3d7
commit 887d293a3b

@ -90,6 +90,19 @@ def clone(repo, dest):
cmd = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) cmd = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return cmd.communicate() return cmd.communicate()
def reset(dest):
'''
Resets the index and working tree to HEAD.
Discards any changes to tracked files in working
tree since that commit.
'''
os.chdir(dest)
cmd = "git reset --hard HEAD"
cmd = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = cmd.communicate()
rc = cmd.returncode
return (rc, out, err)
def pull(repo, dest): def pull(repo, dest):
''' updates repo from remote sources ''' ''' updates repo from remote sources '''
os.chdir(dest) os.chdir(dest)
@ -123,6 +136,9 @@ if not os.path.exists(gitconfig):
else: else:
# else do a pull # else do a pull
before = get_version(dest) before = get_version(dest)
(rc, out, err) = reset(dest)
if rc != 0:
fail_json(out=out, err=err)
(out, err) = pull(repo, dest) (out, err) = pull(repo, dest)
# handle errors from clone or pull # handle errors from clone or pull

Loading…
Cancel
Save