57 lines
1.5 KiB
Python
57 lines
1.5 KiB
Python
#!/usr/bin/env python
|
|
|
|
import hglib
|
|
from hglib.util import b
|
|
|
|
import os
|
|
import sys
|
|
|
|
|
|
def main():
|
|
if 'BUILD_URL' not in os.environ:
|
|
print('Warning: This script should be called on jenkins only')
|
|
return -1
|
|
|
|
if len(sys.argv) > 2:
|
|
print('Unknown parameter: {}'.format(sys.argv))
|
|
return -1
|
|
|
|
patch = b(sys.argv[1]) if len(sys.argv) == 2 else b('../patch.diff')
|
|
if not os.path.isfile(patch):
|
|
print('Patch file "{}" does not exists'.format(patch))
|
|
return -1
|
|
|
|
cfg = ['extensions.hgext.purge=',
|
|
'extensions.hgext.strip=',
|
|
'phases.new-commit=draft']
|
|
client = hglib.open(configs=cfg)
|
|
|
|
print('Revert workspace...')
|
|
client.revert(b('.'), all=True, nobackup=True)
|
|
|
|
print('Purge workspace...')
|
|
client.rawcommand([b('purge'), b('--all')])
|
|
|
|
revs = len(client.log(revrange='secret() or draft()'))
|
|
print('Found secret/draft changesets: {}'.format(revs))
|
|
|
|
if revs > 0:
|
|
print('Strip secret and draft changesets...')
|
|
client.rawcommand([b('strip'),
|
|
b('-r'),
|
|
b('secret() or draft()'),
|
|
b('--no-backup'),
|
|
b('--force')])
|
|
|
|
print('Import patch: {}'.format(patch))
|
|
client.import_([patch],
|
|
user='jenkins@review',
|
|
date='today',
|
|
message='jenkins patch review')
|
|
|
|
return 0
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|