Rfaulk has uploaded a new change for review.
https://gerrit.wikimedia.org/r/87658
Change subject: add/fix - _git_revert / revert functionality.
......................................................................
add/fix - _git_revert / revert functionality.
Change-Id: Idcc74c76a12e15c85c2d3853810562cbb8f300bd
---
M sartoris/config.py
M sartoris/sartoris.py
2 files changed, 36 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/sartoris refs/changes/58/87658/1
diff --git a/sartoris/config.py b/sartoris/config.py
index 410277c..e5d4c95 100644
--- a/sartoris/config.py
+++ b/sartoris/config.py
@@ -54,6 +54,8 @@
30: 'No deploy started. Please run: git deploy start',
31: 'Failed to write tag on sync. Exiting.',
32: 'Failed to write the .deploy file. Exiting.',
+ 33: 'git revert failed. Exiting.',
+ 34: 'git log failed. Exiting.',
40: 'Failed to run sync script. Exiting.',
50: 'Failed to read the .deploy file. Exiting.',
60: 'Invalid git deploy action. Exiting.',
diff --git a/sartoris/sartoris.py b/sartoris/sartoris.py
index 850b07f..21b2a11 100755
--- a/sartoris/sartoris.py
+++ b/sartoris/sartoris.py
@@ -268,10 +268,29 @@
proc = subprocess.Popen(cmd.split(),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- commits = [i.split()[0] for i in
proc.communicate()[0][:-1].split('\n')]
+ proc_out = proc.communicate()
+
+ if proc.returncode != 0:
+ raise SartorisError(message=exit_codes[34], exit_code=34)
+
+ commits = [i.split()[0] for i in proc_out[0][:-1].split('\n')]
commits.reverse()
return commits
+
+ def _git_revert(self, commit_sha):
+ """
+ Perform a no-commit revert
+ """
+ cmd = 'git revert --no-commit {0}'.format(commit_sha)
+ proc = subprocess.Popen(cmd.split(),
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+
+ proc.communicate()
+
+ if proc.returncode != 0:
+ raise SartorisError(message=exit_codes[33], exit_code=33)
def start(self, args):
"""
@@ -487,17 +506,20 @@
if tag == '':
raise SartorisError(message=exit_codes[13], exit_code=13)
- # Reset the HEAD
- self._dulwich_reset_to_tag(tag)
-
- # Add changes to staging
- self._dulwich_stage_all()
-
- # Commit
- self._dulwich_commit(self._make_author())
-
- # Sync to reset HEAD
- self._sync(revert_tag, args.force)
+ #
+ # Rollback to tag:
+ #
+ # 1. get a commit list
+ # 2. perform no-commit reverts
+ # 3. commit
+ #
+ tag_commit_sha = self._get_commit_sha_for_tag(tag)
+ for commit_sha in self._git_commit_list():
+ if commit_sha == tag_commit_sha:
+ break
+ self._git_revert(commit_sha)
+ self._dulwich_commit(self._make_author(),
+ message='Rollback to {0}.'.format(tag))
return 0
--
To view, visit https://gerrit.wikimedia.org/r/87658
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Idcc74c76a12e15c85c2d3853810562cbb8f300bd
Gerrit-PatchSet: 1
Gerrit-Project: sartoris
Gerrit-Branch: master
Gerrit-Owner: Rfaulk <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits