6

私は小さな LAMP 開発スタジオで働いており、コードを完成させてリストの次の項目に進むことを目的としています。

チームは、FTP または SFTP 経由で Live サーバーに接続された Zend Studio 5.5 で作業します。彼らがこれについて気に入っているのは、コードの展開の速度です (ライブ コードを変更するだけなので)。

しかしもちろん、多くの明らかな理由により、これは良くありません。

彼らをバージョン管理システム (CVS、SVN、またはその他のツール) に移行したいのですが、問題は、私は彼らの先輩ではないので、彼らがこれを使い始めるにはニンジンが必要なことです。

彼らがいつものようにコーディングできるようにするには、彼らのマシンにどのようなセットアップを構築する必要がありますか?

私がすることは、自分のマシンでこのセットアップを作成し、それを表示することです。

私はこれがちょっと変わっていることを知っていますが、コードの通常のハッキングから構造と優雅さに彼らの考え方を変えることは私の情熱に変わりました. ありがとう。

更新 (Jonathan Leffler の回答):

  1. はい
  2. いいえ
  3. はい、彼らは本当にそうします

また、スタジオは何百ものサイトでホストされている集中型の CMS システムを作成しています。サイトをメインのコンポジトリに置くべきか、独自のコンポジトリに置くべきか、個々のサイトを変更する必要がありますか?

4

8 に答える 8

7

質問:

  1. 以前のバージョンの Web サイトに戻す必要があったのに、以前のバージョンに戻せなかったという災害に遭ったことはありませんか?

  2. ステージング Web サーバーを使用して変更をテストしていますか?

  3. どこかでテストせずに本番サーバーのコードを変更することはありませんか?

最初の質問に対する答えは「はい (災害があった)」で、2 番目の質問は「いいえ」ではないかと思います。彼らは本当にそうします」)。もしそれが正しければ、私は彼らの勇敢さを賞賛し、彼らが決して間違いを犯さないことに驚いています. ライブ Web サイトを直接変更する危険は決してありません。

バージョン管理システムまたは VCS (任意の VCS) を自分で使用することをお勧めします。あなたが管理しているコードの問題点を解決し、VCS コードを Web サイトに配布するのが簡単になる (おそらくまだ SFTP を使用している) 巧妙な配布を開発します。しかし、以前のバージョンを保存することにはメリットがあることも示してください。なぜなら、誰がいつ何をしたかを復元できるからです。まず、作業が必要なページ (ファイル) の現在のバージョンをダウンロードし、ページの変更を開始する前にその最新バージョンを VCS に入れる必要があることに気付くかもしれません。がマスター リポジトリで最後に更新されました。ファイルを毎日「スクレイプ」して現在のバージョンを取得し、変更を追跡することもできます。「誰が」も正確に「いつ」もわかりません。


質問のコメントに答えて、Ólafur Waage 氏は、VCS がないために災害が発生したことを明らかにしました。

それは通常、人生をずっと楽にします。彼らはふざけました。彼らは間抜けを元に戻すことができませんでした-おそらく顧客を悩ませていました、そして彼らは自分自身に信じられないほどイライラしていたはずです。VCS を使用すると、このようなミスからの回復がはるかに簡単になります。明らかに、特定のカスタマイズされたサイトについては、VCS で利用可能なそのサイトの「正しい」または「公式」バージョンの (中央) バックアップが必要です。ブランチとマージを適切にサポートする VCS を使用して、すべての顧客に対して単一のリポジトリを使用することをお勧めします。最初は(人々がVCSの使用に慣れるまで)対処するのが難しいかもしれませんが、長期的にはおそらくより良い結果につながります. 最新の分散型 VCS (たとえば、git )を使用することを真剣に検討します。

于 2008-12-28T23:23:45.987 に答える
2

誰もが気に入るトリックが1つあります。

私はこの「プラグイン」をほとんどの本番サイトに含めています。もちろん、最初にこの「プラグイン」の権利が制限されたロボットsvnアカウントを作成する必要があり、svnをサーバーにインストールする必要があります。

    echo(' updating from svn<br>' );
    $username = Settings::Load()->Get('svn','username');
    $password = Settings::Load()->Get('svn','password');
    echo(" <pre>" );
    $repos = Settings::Load()->Get('svn' , 'repository');
    echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force");
    echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force");

    die();

もちろん、これを.htpasswdedサイトの背後に配置し、SVNから「本番設定」を更新しないようにしてください。出来上がり、あなたはあなたのサイトへの1つのHTTPクエリであなたの完全なコードベースを更新します:) SVNはファイルを自動的に上書きし、隠しファイルやフォルダが残らず、特定のバージョンを更新または戻すために簡単に適応します。これで、チームが行う必要があるのは、SVNリポジトリにコミットし、テスト環境でこのコードを実行し、すべてが機能することを確認してから、本番環境で実行することです:)

于 2008-12-29T13:01:30.860 に答える
2

tortoise svn client を使用して、ローカル マシン上のリポジトリを他のファイル パス上に作成して操作することができます。作業パスは次のとおりです。

多分それを自分でセットアップして使用し、しばらくしてから何ができるかを彼らに見せてください. もう 1 つのクールな方法は、trac ( http://trac.edgewall.org/ ) をサーバーにインストールすることです (アクセス権と特権がある場合)。または、自分の開発マシンの仮想マシンにインストールすることもできます。trac を svn にマップし、プロジェクト マネージャーに表示できる Web インターフェイスで svn の変更を取得できます。おそらく彼は、Web インターフェースを介してコードの変更を簡単に確認できることに惹かれることでしょう。もちろん、apache + svn モジュールだけでそれを行うことができますが、これはチケット発行とロードマップへのパスを提供するため、より優れています (マイルストーンとマネージャーが掘り下げる可能性のあるもの:o))..

とにかく頑張ってください:)。少なくとも、ローカルマシンでの作業にはそれを使用してください。そうすることで利益が得られるだけです。

于 2008-12-28T23:33:10.603 に答える
2

デモ用にローカル システムに SVN をインストールできます。Zend と Eclipse を SVN に統合するツールがいくつかあります。SVN のデモを行うことに加えて、SVN がもたらす利点のいくつかを (おそらくデモ中に) プレゼンテーションする必要があると思います。

いくつかのアイデアについては、このリンクにアクセスしてください: Do I Really Need Version Control?

于 2008-12-28T23:37:17.647 に答える
1

Ólafur さんは、「このスタジオは、何百ものサイトでホストされる CMS システムを作成している」とおっしゃいました。これ自体が必要なニンジンかもしれません。チームがこれらの数百のサイトに更新を頻繁に展開している場合、バージョン管理システム内でブランチを使用すると、このプロセスが誰にとってもはるかに簡単になる場合があります。これは大幅な時間の節約になる可能性があり、バージョン管理システムを学習するインセンティブを人々に提供します。

これらのサイトはすべて関連しているようです。つまり、同じ CMS のカスタマイズされたバージョンです。その場合、カスタマイズされていない CMS 製品に加えて、すべてのサイトを同じリポジトリに配置する必要があります。次に、それらすべてを同じ中央製品のブランチとして構成できます。個別のリポジトリを使用する場合、ブランチを作成してカスタマイズをメインの製品に関連付ける簡単な方法はありません。(Subversion などでできると思いますが、すべての開発者が同じ組織で働いている場合は複雑で不要です。)

于 2008-12-28T23:43:43.717 に答える
0

展開を自動化された「ビルド」プロセスの一部にして、開発者が心配する必要がないようにします。「ストリーム」を使用して、開発エリア、qa エリア、およびリリース エリアで作業を維持し、最新の開発、qa、およびリリース環境を展開する自動化されたプロセスを使用します。

于 2008-12-29T05:15:27.057 に答える
0

つまり、SVNを真ん中に置くだけです。

開発チームは新しいものを subversion に入れ、svn からのものをエクスポートして Web サーバーに送信するスクリプトを作成します。

これは現在の作業方法に非常に近いですが、小さな変更はすべて Subversion に記録されているため、落雷が発生した場合でも、すべてを非常に迅速に元に戻すことができます。

/ヨハン

于 2009-01-04T20:30:18.787 に答える
0

VisualSVNServer と TurtoiseSVN は、私が使用する 2 つのプログラムです。どちらも十分に文書化されており、Windows Explorer および Visual Studio と非常によく統合されています。

于 2008-12-28T23:46:01.730 に答える