これらは関数になります: ローカルファイルのスマートコメンターとgitコミッター。
まず第一に、生地を入れて、その後、どこにでもそれを置きます(突然、あなたがまだそれをしないならば)!
pip install fabric
コミッター
超自然的なものはありません-便利なレシピ:
# -*- coding: utf-8 -*- from fabric.api import local, prompt, settings env.test_branch = 'test' env.dev_branch = 'dev' def commit(): """ . """ with settings(warn_only=True): local('git status') prompt('Press <Enter> to continue or <Ctrl+C> to cancel.') # , # local('git add .') local('git commit') # def merge_dev_to_test(with_return=True): """ . """ local('git checkout %s' % env.test_branch) # local('git merge --no-ff %s' % env.dev_branch) # if with_return: local('git checkout %s' % env.dev_branch) # def to_test() """ . """ commit() merge_dev_to_test()
merge_dev_to_test
関数
merge_dev_to_test
非常に適用されており、簡単にユニバーサル化できます。
実際、このスクリプトは、6つのコマンドの入力を1つの
fab to_test
の入力とエディターのコメントの入力に
fab to_test
ます。 同時に、彼はプレビューを行います-ブランチでどのような変更が発生するかを確認し、開発ブランチの成果をテストブランチにマージします。 マージが不要な場合は、
fab commit
。
解説者
Django設定オプションのスイッチとして使用します。
気を散らして、すぐに言いたいのは、これが異なるジャンゴ設定を異なる状況に使用する唯一の真の方法ではないということです。 これはそのうちの1つです。 他のオプションはここにあります 。
# -*- coding: utf-8 -*- from os import path from fabric.api import env, local env.settings_files = ( path.join('projcet_root', 'settings.py'), path.join('projcet_root', 'module', 'settings.py'), ) env.settings_versions = { 'develop': '#-D', 'test': '#-T', 'production': '#-P', } def _commenter(c_type, filename, regex, use_sudo=False, char='#', backup='.bak'): """ . """ if use_sudo: sudoer = 'sudo ' else: sudoer = '' if regex.startswith('^'): regex = regex[1:] if regex.endswith('$'): regex = regex[:-1] if c_type == 'comment': replacement = '%s ' % char char = '[^%s ]' % char regex = '(%s.+%s.*)' % (char, regex) else: replacement = '' regex = r'%s ?(.+%s.*)' % (char, regex) local(r"{sudo}sed -i{backup} -r -e 's/^([[:space:]]*){regex}$/" r"\1{replacement}\2/g' {filename}".format(**{ 'sudo': sudoer, 'backup': backup, 'replacement': replacement, 'regex': regex, 'filename': filename, })) def lcomment(*args, **kwargs): """ . """ _commenter('comment', *args, **kwargs) def luncomment(*args, **kwargs): """ . """ _commenter('uncomment', *args, **kwargs) def update_settings(mode): """ . """ for filename in env.settings_files: for version in env.settings_versions: if mode == version: luncomment(filename, versions[version]) elif: lcomment(filename, versions[version])
コードはヒストグラムでも利用できます。
fabric
自体には、
comment
機能を備えた
contrib.files
モジュールがあります。この機能は、
contrib.files
、
contrib.files
機能するという点で「コメンター」を繰り返し、コメントを行の先頭ではなく、コメント記号とテキストの間にスペースを挿入します(これにより、 崇高なテキスト )が作成され、行末でのみマーカーが検索されます。
彼ができること。
fab update_settings:mode=<>
コマンド
fab update_settings:mode=<>
て、モードに対応するマーカーで行のコメントを解除し、対応しないマーカーでコメントすることにより、
env.settings_files
リストからファイルをバイパスできます。
つまり
fab update_settings:mode=test
呼び出し
fab update_settings:mode=test
は、ファイル「
/project_root/settings.py
」および「
/project_root/settings.py
を
/project_root/module/settings.py
し、「#-D」および「#-P」で終わる行にコメントし、「#-T」で終わるコメント解除します。
これにより、次のタイプの構成を作成できます。
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dvl', # #-D # 'NAME': 'prd', # #-P # 'NAME': 'tst', # #-T 'USER': 'ruutt', 'PASSWORD': 'gigopasswort', 'CHARSET': 'UTF8', }, }
...コミット段階でそれらを分離します。
def deploy(branch): env.test_branch =branch # commit(False) # , update_settings(branch) # # , , .. local('git checkout %s' % env.dev_branch) # prompt("OK. Press any <Enter> to exit.") # IDE - # .
そして、このすべてのハッシュを利用できるので、
fab deploy:branch=test
です。 コンソールにいくつのチームがあり、チームに費やす時間が節約されるかはあなたにお任せします。
ここに、私が共有することにしたそのような運用時間を示します。 そして、どういうわけか、私たちのお気に入りの雑誌のページでファブリックがすでに非常にさりげなく言及されています...