Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
5e4d2956
Commit
5e4d2956
authored
Jan 26, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Standardize the hg command execution around our run command function.
parent
2da3a54e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
37 deletions
+31
-37
library/hg
+31
-37
No files found.
library/hg
View file @
5e4d2956
...
...
@@ -122,32 +122,30 @@ def _undo_hgrc(hgrc, vals):
parser
.
write
(
f
)
f
.
close
()
def
_hg_command
(
args_list
):
cmd
=
[
'hg'
]
+
args_list
p
=
Popen
(
cmd
,
stdout
=
PIPE
,
stderr
=
PIPE
)
out
,
err
=
p
.
communicate
()
return
out
,
err
,
p
.
returncode
def
_hg_discard
(
dest
):
out
,
err
,
code
=
_hg_command
([
'up'
,
'-C'
,
'-R'
,
dest
])
def
_hg_command
(
module
,
args_list
):
(
rc
,
out
,
err
)
=
module
.
run_command
([
'hg'
]
+
args_list
)
return
(
out
,
err
,
rc
)
def
_hg_discard
(
module
,
dest
):
out
,
err
,
code
=
_hg_command
(
module
,
[
'up'
,
'-C'
,
'-R'
,
dest
])
if
code
!=
0
:
raise
HgError
(
err
)
def
_hg_purge
(
dest
):
def
_hg_purge
(
module
,
dest
):
hgrc
=
os
.
path
.
join
(
dest
,
'.hg/hgrc'
)
purge_option
=
[(
'extensions'
,
'purge'
,
''
)]
_set_hgrc
(
hgrc
,
purge_option
)
out
,
err
,
code
=
_hg_command
([
'purge'
,
'-R'
,
dest
])
out
,
err
,
code
=
_hg_command
(
module
,
[
'purge'
,
'-R'
,
dest
])
if
code
==
0
:
_undo_hgrc
(
hgrc
,
purge_option
)
else
:
raise
HgError
(
err
)
def
_hg_verify
(
dest
):
def
_hg_verify
(
module
,
dest
):
error1
=
"hg verify failed."
error2
=
"{dest} is not a repository."
.
format
(
dest
=
dest
)
out
,
err
,
code
=
_hg_command
([
'verify'
,
'-R'
,
dest
])
out
,
err
,
code
=
_hg_command
(
module
,
[
'verify'
,
'-R'
,
dest
])
if
code
==
1
:
raise
HgError
(
error1
,
stderr
=
err
)
elif
code
==
255
:
...
...
@@ -155,7 +153,7 @@ def _hg_verify(dest):
elif
code
==
0
:
return
True
def
_post_op_hg_revision_check
(
dest
,
revision
):
def
_post_op_hg_revision_check
(
module
,
dest
,
revision
):
"""
Verify the tip is the same as `revision`.
...
...
@@ -170,13 +168,13 @@ def _post_op_hg_revision_check(dest, revision):
err2
=
"tip is different from
%
s. See below for extended summary."
%
revision
if
revision
==
'default'
:
out
,
err
,
code
=
_hg_command
([
'pull'
,
'-R'
,
dest
])
out
,
err
,
code
=
_hg_command
(
module
,
[
'pull'
,
'-R'
,
dest
])
if
"no changes found"
in
out
:
return
True
else
:
raise
HgError
(
err2
,
stderr
=
out
)
else
:
out
,
err
,
code
=
_hg_command
([
'tip'
,
'-R'
,
dest
])
out
,
err
,
code
=
_hg_command
(
module
,
[
'tip'
,
'-R'
,
dest
])
if
revision
in
out
:
# revision should be part of the output (changeset: $revision ...)
return
True
else
:
...
...
@@ -185,45 +183,45 @@ def _post_op_hg_revision_check(dest, revision):
else
:
# hg tip is fine, but tip != revision
raise
HgError
(
err2
,
stderr
=
out
)
def
force_and_clean
(
dest
):
_hg_discard
(
dest
)
_hg_purge
(
dest
)
def
force_and_clean
(
module
,
dest
):
_hg_discard
(
module
,
dest
)
_hg_purge
(
module
,
dest
)
def
pull_and_update
(
repo
,
dest
,
revision
,
force
):
def
pull_and_update
(
module
,
repo
,
dest
,
revision
,
force
):
if
force
==
'yes'
:
force_and_clean
(
dest
)
force_and_clean
(
module
,
dest
)
if
_hg_verify
(
dest
):
if
_hg_verify
(
module
,
dest
):
cmd1
=
[
'pull'
,
'-R'
,
dest
,
'-r'
,
revision
]
out
,
err
,
code
=
_hg_command
(
cmd1
)
out
,
err
,
code
=
_hg_command
(
module
,
cmd1
)
if
code
==
1
:
raise
HgError
(
"Unable to perform pull on
%
s"
%
dest
,
stderr
=
err
)
elif
code
==
0
:
cmd2
=
[
'update'
,
'-R'
,
dest
,
'-r'
,
revision
]
out
,
err
,
code
=
_hg_command
(
cmd2
)
out
,
err
,
code
=
_hg_command
(
module
,
cmd2
)
if
code
==
1
:
raise
HgError
(
"There are unresolved files in
%
s"
%
dest
,
stderr
=
err
)
elif
code
==
0
:
# so far pull and update seems to be working, check revision and $revision are equal
_post_op_hg_revision_check
(
dest
,
revision
)
_post_op_hg_revision_check
(
module
,
dest
,
revision
)
return
True
# when code aren't 1 or 0 in either command
raise
HgError
(
""
,
stderr
=
err
)
def
clone
(
repo
,
dest
,
revision
,
force
):
def
clone
(
module
,
repo
,
dest
,
revision
,
force
):
if
os
.
path
.
exists
(
dest
):
if
_hg_verify
(
dest
):
# make sure it's a real repo
if
_post_op_hg_revision_check
(
dest
,
revision
):
# make sure revision and $revision are equal
if
_hg_verify
(
module
,
dest
):
# make sure it's a real repo
if
_post_op_hg_revision_check
(
module
,
dest
,
revision
):
# make sure revision and $revision are equal
if
force
==
'yes'
:
force_and_clean
(
dest
)
force_and_clean
(
module
,
dest
)
return
False
cmd
=
[
'clone'
,
repo
,
dest
,
'-r'
,
revision
]
out
,
err
,
code
=
_hg_command
(
cmd
)
out
,
err
,
code
=
_hg_command
(
module
,
cmd
)
if
code
==
0
:
_hg_verify
(
dest
)
_post_op_hg_revision_check
(
dest
,
revision
)
_hg_verify
(
module
,
dest
)
_post_op_hg_revision_check
(
module
,
dest
,
revision
)
return
True
else
:
raise
HgError
(
err
,
stderr
=
''
)
...
...
@@ -250,15 +248,11 @@ def main():
shutil
.
rmtree
(
dest
)
changed
=
True
elif
state
==
'present'
:
changed
=
clone
(
repo
,
dest
,
revision
,
force
)
changed
=
clone
(
module
,
repo
,
dest
,
revision
,
force
)
elif
state
==
'latest'
:
changed
=
pull_and_update
(
repo
,
dest
,
revision
,
force
)
changed
=
pull_and_update
(
module
,
repo
,
dest
,
revision
,
force
)
module
.
exit_json
(
dest
=
dest
,
changed
=
changed
)
#except HgError as e:
# module.fail_json(msg=str(e), params=module.params)
#except IOError as e:
# module.fail_json(msg=str(e), params=module.params)
except
Exception
as
e
:
module
.
fail_json
(
msg
=
str
(
e
),
params
=
module
.
params
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment