3

サイトを完全なバージョン管理下に置こうとしています。サイトとファイルは現在サーバー上に存在し、ディレクトリやファイルを削除せずに、バージョン管理されていないファイルをバージョン管理されたコピーに置き換える必要があります。

使ってみた

svn checkout --force https://myrepo/trunk .

svn revert -R .

ただし、これはチェックアウトを行いましたが、既存のディレクトリの代わりにいくつかのsvn外部を使用しています。次のエラーが表示されます: 外部アイテムを 'production/JS' にフェッチしています: svn: 警告: W155007: ディレクトリ以外でロックを取得できません

JS は外部プロジェクトです。既存のディレクトリを削除して、更新またはチェックアウトを実行するだけですべてがそこにあることはわかっていますが、チェックアウトを実行するのに十分な時間サイトをダウンさせたくありません。

それで、既存のディレクトリをこれらの外部ディレクトリに置き換えるためにsvnにキャストできる魔法の呪文はありますか?

4

1 に答える 1

1

svn 作業コピーからサイトを提供しないことをお勧めします。単純な展開スクリプト (CI サーバーによって実行される) は、サーバー上でソース (コピー/抽出/インストール) をアトミックにパッケージ化できます。これがどのように機能するかは、サイト/アプリに大きく依存します。wwwroot を site-1.0.0 にシンボリックリンクすることから始めることができます。

  1. ビルド マシン (または CI サーバー) をソースにパッケージ化する
  2. パッケージをサーバーにコピーするデプロイ スクリプトを用意する
  3. site-1.0.1に抽出/インストールします
  4. site-1.0.0 を指すシンボリックリンクを site-1.0.1 に交換します
  5. サイトの最新の 5 つのバージョンを除くすべてを削除する

これにより、いくつかのことが得られます。

  • 真にアトミックな展開が得られます。svn の更新でさえ、サイトが短時間不安定な状態になる可能性があります
  • シンボリックリンクを元に戻すことで、既知の状態にすばやく簡単に戻すことができます。
  • 誰かがサーバー上でローカルにファイルを編集するリスクを取り除きます (svn up は更新を取り消しません)。
  • ビルド/パッケージまたはデプロイ スクリプトでさえ、js を連結/縮小できます
  • スクリプトは、任意のキャッシュまたは CDN 内のものを期限切れにすることもできます

これがあなたの質問に直接答えていないことを申し訳ありませんが、言及する価値があると感じました.

于 2013-11-09T17:45:12.583 に答える