2
0
mirror of https://github.com/frappe/bench.git synced 2025-01-09 16:36:25 +00:00

command to staging branch from develop brach

This commit is contained in:
Saurabh 2017-07-20 16:11:02 +05:30
parent abae508cb9
commit 9b99b1d34f
3 changed files with 79 additions and 1 deletions

View File

@ -38,7 +38,7 @@ bench_command.add_command(switch_to_develop)
from bench.commands.utils import (start, restart, set_nginx_port, set_ssl_certificate, set_ssl_certificate_key, set_url_root,
set_mariadb_host, set_default_site, download_translations, shell, backup_site, backup_all_sites, release, renew_lets_encrypt,
disable_production, bench_src)
disable_production, bench_src, prepare_staging)
bench_command.add_command(start)
bench_command.add_command(restart)
bench_command.add_command(set_nginx_port)
@ -52,6 +52,7 @@ bench_command.add_command(shell)
bench_command.add_command(backup_site)
bench_command.add_command(backup_all_sites)
bench_command.add_command(release)
bench_command.add_command(prepare_staging)
bench_command.add_command(renew_lets_encrypt)
bench_command.add_command(disable_production)
bench_command.add_command(bench_src)

View File

@ -130,6 +130,13 @@ def release(app, bump_type, from_branch, to_branch, owner, repo_name, remote):
release(bench_path='.', app=app, bump_type=bump_type, from_branch=from_branch, to_branch=to_branch,
remote=remote, owner=owner, repo_name=repo_name)
@click.command('prepare-staging')
@click.argument('app')
def prepare_staging(app):
"""Prepare staging branch from develop branch"""
from bench.prepare_staging import prepare_staging
prepare_staging(bench_path='.', app=app)
@click.command('disable-production')
def disable_production():

70
bench/prepare_staging.py Executable file
View File

@ -0,0 +1,70 @@
#! env python
import os
import git
import click
github_username = None
github_password = None
def prepare_staging(bench_path, app, remote='upstream'):
from .release import get_release_message
validate(bench_path)
repo_path = os.path.join(bench_path, 'apps', app)
update_branches(repo_path, remote)
message = get_release_message(repo_path, develop='develop', master='staging', remote=remote)
if not message:
print('No commits to release')
return
print()
print(message)
print()
click.confirm('Do you want to continue?', abort=True)
create_staging(repo_path)
push_commits(repo_path)
def validate(bench_path):
from .release import validate
validate(bench_path)
def update_branches(repo_path, remote):
from .release import update_branch
update_branch(repo_path, 'staging', remote)
update_branch(repo_path, 'develop', remote)
git.Repo(repo_path).git.checkout('develop')
def create_staging(repo_path, develop='develop'):
from .release import handle_merge_error
print('creating staging from', develop)
repo = git.Repo(repo_path)
g = repo.git
g.checkout('staging')
try:
g.merge(develop, '--no-ff')
except git.exc.GitCommandError as e:
handle_merge_error(e, source=develop, target='staging')
g.checkout(develop)
try:
g.merge('staging')
except git.exc.GitCommandError as e:
handle_merge_error(e, source='staging', target=develop)
def push_commits(repo_path, remote='upstream'):
print('pushing staging branch of', repo_path)
repo = git.Repo(repo_path)
g = repo.git
args = [
'develop:develop',
'staging:staging'
]
print(g.push(remote, *args))