サイトデータの作業コピーでの作業(ターミナル編)

パソコン・インターネット

Mac OS X 10.5.8
Leopardで、Subversion(SVN)によるWebサイト(ホームページ)の管理システムを構築しました。何回かに分けて、紹介しています。

前回は、SVNリポジトリの中にサイトデータを作る所で終わっていました。

サイトデータの作業コピーでの作業についてまとめてみようと思います。SVN(Subversion)コマンドの説明になるのですが、「○○をする時の具体的作業方法」と言うまとめ方にしています。

色々なWebページを参考に、実際に確かめながら記事を書いています。ですが、間違いが入っているかもしれません。その場合はお知らせ下さい。

Webサイト用データの変更は、リポジトリのtrunkからの作業コピー(ワーキングコピー:WC)に対してする様にします。作業用コピーを作る事を、checkoutと言います。

作業コピーを、ホームディレクトリのSites.svnとします。ユーザー名を"user1"としていましたので、オプションとして付け加えます。

$ cd
$ svn checkout http://localhost/svn/wwwlocal/trunk Sites.svn --username user1
Authentication realm: <http://localhost:80> Subversion repositories
Password for 'user1':
A    Sites.svn/index.html
A    Sites.svn/styles.css
Checked out revision 4.

これで、作業コピーが作られました。この後の編集作業は、Sites.svn内で行います

主な作業は、次のような物だと思います。

  • 新規ファイルの追加
  • 既存ファイルの編集
  • 既存ファイルの削除
  • フォルダの追加

以下、実際の例を使って説明します。基本的に、ファイル作業とsvn commit(リポジトリへの登録)の組み合わせです。

【新規ファイルの追加】

新規ファイルの追加は、JPEGなどの画像ファイルを追加する場合だと思います。ワーキングコピー(Sites.svn)の中に、画像ファイル(image1.jpg)を追加する場合を考えます。

  1. 作業コピーに、新しいファイルをコピー
  2. svn addで追加を登録
  3. svn commitで、新しいファイルをリポジトリに登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ cp ~/Pictures/image1.jpg . (Finderでコピーしても良い)
$ svn add image1.jpg
A  (bin)  image1.jpg
$ svn commit -m "New Image"
Adding  (bin)  image1.jpg
Transmitting file data .
Committed revision 5.

または、全く新しいファイルを作る事があるかもしれません。

  1. テキストエディットで新規ファイル作成
  2. 作業コピー内に保存(newpage1.html)
  3. svn addで追加を登録
  4. svn commitで、新しいファイルをリポジトリに登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ vi newpage1.html (テキストエディット.appやEmacsなど、他のエディタでも良い)
$ svn add newpage1.html
A         newpage1.html
$ svn commit -m "newpage1作成"
Adding         newpage1.html
Transmitting file data .
Committed revision 6.

作業コピー内に新しいファイルを作るのは、Finderを通しての作業で構いません。ただし、その後にsvn add/svn commitが必要になります。

【既存ファイルの編集】

既存ファイルの編集は、例えば、既にあるindex.htmlをnewpage2.htmlにコピーして、newpage2.htmlを編集するような場合だと思います。

  1. ファイルのコピー
  2. テキストエディット.appやEmacsなどでファイルを編集
  3. svn commitで、修正をリポジトリに登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ svn copy index.html newpage2.html
A         newpage2.html
$ vi newpage2.html (テキストエディット.appやEmacsなど、他のエディタでも良い)
$ svn commit -m "newpage2編集"
Adding         newpage2.html
Transmitting file data .
Committed revision 7.

ファイルのコピーに、svn copyを使いました。次の例のように、ファインダでindex.htmlをコピーして、newpage3.htmlに名前を変えて、svn addしても構いません。

$ cd
$ cd Sites.svn
$ cp index.html newpage3.html (ファインダでコピーして、名前を変えても良い)
$ svn add newpage3.html (svn addが必要になる)
A         newpage3.html
$ vi newpage3.html (テキストエディット.appやEmacsなど、他のエディタでも良い)
$ svn commit -m "newpage3編集"
Adding         newpage3.html
Transmitting file data .
Committed revision 8.

svn copyを使わない場合は、svn addを忘れないで下さい。その後のsvn commitは、どの場合でも必要です。

【既存ファイルの削除】

svn commitでリポジトリに登録したあと、やっぱり不要だったと言う時があります。そういう時は、svn deleteで削除します。

  1. svn deleteで削除を登録(newpage3.htmlを消すとします)
  2. svn commitで、リポジトリに登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ svn delete newpage3.html
D         newpage3.html
$ svn commit -m "不要につきnewpage3.html削除"
Deleting       newpage3.html
Committed revision 9.

作業コピーにファイルをコピーしてきただけで、svn addとsvn commitする前でしたら、そのファイルをゴミ箱に捨てるだけで構いません。

もし、svn addしてしまった時は、一度svn commitしてから、上記の削除作業をして下さい。別の方法もありますが、この方法が安全だと思います。

$ cd
$ cd Sites.svn
$ cp newpage2.html newpage4.html (この段階だったら、ファイルをゴミ箱に捨てればOK)
$ svn add newpage4.html (svn addしてしまったら、仮登録して削除するのが間違いない)
A         newpage4.html
$ svn commit -m "newpage4.html仮登録"
Adding         newpage4.html
Transmitting file data .
Committed revision 10.
$ svn delete newpage4.html
D         newpage4.html
$ svn commit -m "不要につきnewpage4.html削除"
Deleting       newpage4.html
Committed revision 11.

【フォルダの追加】

フォルダ(ディレクトリ)を追加するには、svn mkdirで作る方法と、ファインダなどでフォルダを作ってからsvn addする方法があります。

svn mkdirで作るには、次の手順です。subdir1と言うフォルダを追加してみます。

  1. svn mkdirでフォルダ作成
  2. svn commitでフォルダを登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ svn mkdir subdir1
A         subdir1
$ svn commit -m "subdir1追加"
Adding         subdir1
Committed revision 12. 

ファインダなどでフォルダを作ってからsvn addする方法を説明します。subdir2を追加するとします。

  1. ファインダなどでフォルダ作成
  2. svn addで追加予告
  3. svn commitでフォルダを登録

ターミナルでの作業は次のようになります。

$ cd
$ cd Sites.svn
$ mkdir subdir2 (ファインダでフォルダを作っても良い)
$ svn add subdir2
A         subdir2
$ svn commit -m "subdir2追加"
Adding         subdir2
Committed revision 13.

【紹介していないコマンド】

他に、svn update、svn status、svn logなどがあります。特に、複数人で作業する時は、svn updateは必須だと思います。

これらのコマンドは、次に紹介するWebページを参考にしてください。

【参考にしたWebページ】

SVNコマンドの使い方は、検索するといくらでも出てきます。「わかりやすいなぁ」と「良くまとめてあるなぁ」と思ったページを紹介しておきます。著者の方、ありがとうございます。

Subversion メモ
Subversion全体に渡ってまとめられています。
Subversion    [てきとうにめも]
言葉は少なめですけど、必要な事は書かれていると思います。
コマンドライン Subversion の使用
リファレンス用です。

【シリーズ記事】

SVNによるWebサイト(ホームページ)管理

  1. SVNリポジトリの作成
  2. SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする
    SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする(おまけ)
    SVNリポジトリをhttp(WebDAV)でアクセス出来るようにする(Digest認証化)
  3. SVNリポジトリの中にサイトデータを作る
  4. サイトデータの作業コピーでの作業(ターミナル編)
    サイトデータの作業コピーでの作業(Emacsのpsvn編)
  5. SVNでローカルサイトの自動更新
  6. ローカルサイトをアクセス出来るようにする
  7. ローカルサイトからインターネットへ

Posted by お市のかた