2009-07-18 8 views
2

ローカルにsvnチェックアウトがあります。変更を加えると、コミットするとサーバーに私のdevコピーを更新します。デベロッパーからライブサイト(django)にファイルを移動する最善の方法

私の質問は、プロダクションサイトに自分のファイルを取得する最良の方法です。私はLinuxのコマンドをあまり使っていませんが、.pycと.svnファイル以外のすべてのファイルを本番サイトに移動するスクリプトを作れると思っていましたか?私は本当に最善の方法が何であるか分かりませんし、それを正しい方法でやる方法についていくつかの専門家から聞きたいと思います。

+0

これはPythonの質問ではありません。 "svn、deployment、scripting"というタグを試してください。 –

答えて

7

私は通常、svnのチェックアウトから直接実行します。運用サーバーにログインし、価値があると思われるリビジョンまたはタグに更新し、サーバーを再起動してください。

は、本番サイトがリポジトリからまっすぐに出てくるので、バージョン管理下に置かれていることを確認する必要があります。必要に応じて、Fabricのようなものを使用して、展開を自動化できます。

+0

大いに同意します。しかし、チェックアウトの代わりに "エクスポート"を実行することをお勧めします。そうすれば、隠された.svnフォルダとその内容がWebサーバーにぶら下がってしまうことはありません。 – Kibbee

+1

私は同意しません。私はそれがライブチェックアウトであるという事実を、監査の目的に役立てています。どのバージョンのサーバーがsvn logであるかを知りたい誰かが何か変わったかどうかを知りたいと思う:svn statusまたはsvn diff。 .svnディレクトリを横取りしているという機密性の問題が懸念されるかもしれませんが、誰かがそれらを読むことができれば、とにかくすべてのコードを読むことができます。だから私は「きちんとした」ためにそれらを削除しません。 –

3

あなたのサーバーにsvn repo(たぶんR/O 1)を保存せず、必要なときにそれをsvn upにすることはできませんか?このようにして、svn:ignoreは特定のファイルを無視するビジネスを扱うことができます。& c。

これはあまりにも面倒であれば、準備が整ったら(リリースノート)(「svnで簡単にロールバックできるようにタグを付けてください)」というファイルをパッケージ化することで作業します。 zipアーカイブを作成し、展開したサーバーに送信します。このようにして、QAバグレポートをより簡単に扱うことができます。ブランチング事業に参入する必要がある場合は、それも救命救助者になるでしょう。

さらに一般的には、release engineeringは重要で、しばしば過小評価されている分野です。その分野で複雑で高度に構造化されたことを今でも必要としていなくても、それを読む価値があります。

1

独自のレポサーバーを使いたくない場合や、水銀やgitの学習に少しでも時間を費やしたい場合は、bitbucketまたはgithubでパブリックリポジトリまたはプライベートリポジトリをすばやく設定できます。

フローは次のとおりです。ローカルでコミットし、オンラインリポジトリにプッシュし、サーバーにログインし、プロジェクトに切り替えて変更を取得します。経験則の1つは、サーバー上でプロジェクトコードを編集しないで、常にローカルにコミットしてプッシュしてからサーバーにプルすることです。 local_settings.pyは私がサーバー上で直接編集する唯一のファイルです。

外部依存関係のためにpip要件ファイルを使用し、依存関係を同期させるために 'pip install --requirement external_apps.txt'と入力するだけで簡単です。また、virtualenvを使用して複数のプロジェクト(少なくともローカルで)とファブリックデプロイメントスクリプトを管理して、デプロイメントプロセスを簡素化することもできます。

ああ、すべてのVCSには、local_settings.pyや* .pycファイルなどのファイルがリポジトリに表示されないようにする.ignoreファイルがあります。

関連する問題