0

最終的にバージョン管理ワークフローに移行することにしましたが... SVN でワークフローをセットアップしようとして運が悪い月です。

私は Coda (svn がサポートされています) + Media Temple Hosting を使用しています。/data/svn/myproject に (MT ガイドに従って) リポジトリをセットアップし、Web サイトのルートをインポートしました。

問題 1: svn はディレクトリではなく、ルート内のファイルの半分のみをインポートしました。

次に、(チュートリアルに従って) Coda でチェックアウトしようとしました。

問題 2: エラーが発生し (ローカル ディレクトリは作業コピーではありません)、.svn フォルダーのみが作成されました。

今、私はバージョン管理システムがどのように機能するかをまったく理解していないと思っています。ファイルを初めてチェックアウトすると、リモートディレクトリからローカルフォルダーにコピーされますか? FTP とバージョン チェックは 2 つの別個のタスクのままですか? つまり、Coda でファイルをコミットすると、リモート Web サイトのディレクトリに自動的に配置され、古いディレクトリが更新されますか? そして、それはコードだけですか、それともすべてがバージョン管理下に置かれますか (画像など...)?

申し訳ありませんが、質問する前に多くのガイドを読みましたが、わかりません!

ありがとう

4

1 に答える 1

3

まず、バージョン管理は IDE とは別のものと考えることをお勧めします。いずれにせよ、それはファイルシステム レベルで動作し、Coda が提供する統合はそれに対する抽象化にすぎません。Codaを方程式から外すと、最初は物事を理解しやすくなります。

さて、私は個人的にコマンド ラインが嫌いなので (もちろん強力ですが)、Windows を使用している場合は、Tortoise を入手して試してみることをお勧めします。私は知りませんが、Macでは。おそらく、Mac 上の SVN 用の優れたグラフィカル ツールもあるでしょう。

基本的に、SVN ワークフローは、リポジトリとローカル フォルダーの 2 つから構成されます。リポジトリはサーバーのようなものです。それはすべてのものの中心的な場所です。「スマート FTP フォルダー」のようなものと考えてください。

ワークフローは次のようなものです。すべてのソース コードなどをローカル フォルダーに書き込みます。完了したと感じたら、それを中央のフォルダー (リポジトリ) にコピーし、次の作業を開始します。完了したら、中央のフォルダーに再度コピーします。等々。このアクションが「コミット」です。ローカル ファイルを中央のフォルダーにコピーして、そこにあったものを上書きします。

実際には、単純なコピーよりも少し「スマート」です。SVN はすべての変更を追跡するため、ローカルでファイルを削除すると、コミットによってサーバー上のファイルも削除されます。これは、サーバー フォルダーをローカル フォルダーとまったく同じように見せるようなものです。

現在、バージョン管理の主なセールス ポイントは、リポジトリのこれらすべての更新が非破壊的であることです。つまり、最新の最高のものをリポジトリにコピーすると、そこにあった古いファイルがアーカイブされ、いつでも元に戻すことができます。実際、SVN リポジトリから何かを削除するのは非常に困難です。そのため、単一の開発者でもソース管理を使用することを好む傾向があります。ソース管理はバックアップ システムのようなものです。失敗した場合は、いつでも古いバージョンを使用して最初からやり直すことができます。何も失われません。そして、それもかなり効率的に行われます。

単純な FTP フォルダーに対する SVN のもう 1 つの主な利点は、複数のユーザーが同じファイルに変更を加えている場合です。それは物事を追跡するので、あなたとあなたの仲間が同じファイルを変更した場合、コミット時に警告します. ほとんどの場合、SVN は変更を自動的にマージできますが、手動で整理する必要がある場合もあります。しかし繰り返しになりますが、誰かが変更したファイルを上書きしたために、誤って変更を失うことはありません。履歴にはすべてが保存されており、両方が同じファイルを上書きしようとするとすぐに、大きな太った警告などが表示されます.

というわけで、ワークフロー...

さて、たいていの場合は次のようになります。

  1. リポジトリをセットアップしました。空のフォルダーのように、最初は空です。
  2. 次に、空のフォルダーをどこかのローカルフォルダーに「チェックアウト」します。安全のために、新しい空のフォルダーも選択してください。これはちょっと無意味ですが、ローカル フォルダーとリポジトリ間のリンクを確立します。つまり、小さな .svn フォルダーが作成されます (これらの小さなフォルダーはそのままにして無視する必要があります)。これ以降、SVN は、このローカル フォルダーがリポジトリ フォルダーをミラーリングしていることを認識し、そのリポジトリ フォルダーにコミットします。
  3. ここで、新しい空のフォルダーにすべてのものをコピーします。
  4. SVN に「すべてのファイルを追加」と言います。これにより、次回のコミット時にリポジトリにコピーする必要がある新しい追加としてすべてのファイルがマークされます。さて、通常、サーバーにコピーしたくないファイルがいくつかあります。そこに何を含めるか、何を含めないかは自由ですが、通常、プログラム ソースに関連するすべてのもの (画像などのリソースを含む) はコピーされ、IDE によって自動再生成されたローカル ファイルはそのまま残ります。アウト。このように考えてみてください。別の人があなたに参加したい場合、彼はリポジトリからすべてのファイルを取得します。どれが彼にとって重要で、どれを削除するでしょうか? SVN には「無視」と呼ばれる機能も含まれているため、今後不要なファイルについてプロンプトが表示されることはありません。
  5. 次にコミットします。これにより、ファイルがサーバーにコピーされ、そこにフォルダーが作成されます。
  6. その後、次の機能に取り掛かります。完了したら、コミットします。そして、次の機能を開始します。など。実際には、いつでもコミットする必要があります。経験則は、サーバーのコピーを正常な状態に保つことです。コンパイルしない場合、またはプログラムの半分が機能しないままの厄介な書き直しの途中である場合は、コミットしないでください。完了したものをコミットします。

それだけです。バディと一緒に仕事をしている場合は、時々「更新」も行います。これにより、仲間がコミットした変更がローカル フォルダーにコピーされます。

SVN には他にも便利な機能がありますが、これが基本的な設定です。これに慣れてから、さらに探してください。

于 2010-06-19T13:37:58.797 に答える