コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2008年6月8日 >>> 2008年5月26日
link もっと後

2008年6月8日

体力の限界がきたらしい

最近の規則正しい生活にはやはり無理があったようです。ついに限界が来ていつもの生活に戻ってしまいました。

昼まで寝てSenaさんの「昼飯くわねー?」メールで起きる生活。ああ…これだよ、これ。やっぱり休日はこうでなければ。

編集者:すずき(2008/06/13 00:50)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年6月7日

飲み会

同期の人と飲み会しました。一応合コンという触れ込みだったのですが、知り合いは合コンとは言わんよなあ…。

四条駅近くのレストランIRO(京都府京都市下京区)というところです。

混んでいたらしく料理が全然出てこなかったり、かと思えばすげー早く出てきたりして店員さんがパニクってた模様です。

京都の飲食店でバイトなんて絶対やりたくないな…と思った。

編集者:すずき(2008/06/13 00:50)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年6月6日

奇跡の一週間

ここ一週間、目覚ましより早く目が覚め、一切寝坊もせず、電車にも余裕で間に合う、そんな朝が続いています。

こんなことは去年一回もありませんでした。一体どうなってるんだろう。まさかどこか体を悪くしたのではなかろうか…?

編集者:すずき(2008/06/13 00:54)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年6月3日

推奨

友人と話していたら、水曜日は定時退社推奨日だよね、って話になった。そういえばそんな日だったかな。誰も実践していない気がするんだけどな…。

編集者:すずき(2008/06/13 00:21)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年6月2日

Mercurial Mini HOWTO

目次: Linux

分散リポジトリ型のバージョン管理システムMercurialの簡単な説明と操作法を書きます。

そもそもバージョン管理システムって何さ?という話はしません。全て説明するのはここでは無理です。世の中には良い書籍がいっぱいありますんでそれを読んでね。

はじめに - Subversion以降のリビジョン番号について

CVSとSubversionの差は色々あるけれど、リビジョンの考え方が激変しました。これは大事だと思うから説明します。

CVSではリポジトリに対する変更をファイル単位でコミットし、リビジョン番号もファイルごとに振ります。

一方Subversionはリポジトリ全体に対してリビジョン番号を振ります。ファイル一つ変更するだけでリポジトリ全体のリビジョン番号が上がるのです。


Subversion等のリビジョン番号

図中の丸印が「ある時点のリポジトリ」を表しています。リビジョンを何かに例えるなら写真の番号でしょうか。コミットは「リポジトリ全体を写真に撮って、番号(=リビジョン)を付けること」に相当します。

リポジトリには今までの全写真と番号が保管されていまして、好きな番号で写真を引っ張り出せます。二つの写真の間違い探し(diff)もできて、被写体(リポジトリ)がどれだけ変わったか(ファイルの追加、変更などの変化)が簡単に追跡できます。

便利な例を一つ。一週間前から今までの全変更点を追跡したくなったとします。

CVSですとリビジョン番号はファイル毎に付くので、一週間でファイルAはリビジョン100進んで、ファイルBはリビジョン1も進んでないなんてことが起こります。一週間前の状態に戻そうとすると、ファイル毎にどのリビジョンを見るべきかチマチマ調べなければなりません。

Subversionならば一週間前のリビジョン番号を調べ、そのリビジョンにリポジトリを巻き戻すだけ(update -r revision_number)です。すると全ファイルが当時の状態に戻ります。タイムマシンのようですね。

Mercurialもリポジトリ全体にリビジョン番号を振る方法を採ります。他のSCMもたぶんそうでしょう。

集中型リポジトリとの違い

区別のためにMercurialの管理方法を分散リポジトリ形式、Subversionの管理方法を集中リポジトリ形式と呼びます。正式名称は知らないです。

集中リポジトリ形式ではリポジトリは一つだけです。利用者はリポジトリの一部をコピー(checkout)していじって、変更を反映(commit)したり、他者が行った変更を取り入れ(update)て使います。

Subversionはさらにローカルにリポジトリのキャッシュを持っていて、diffやstatusコマンド実行の際、リポジトリとの通信が不要です。この機能はリポジトリにアクセスできない状態(オフライン)でも使えるのでとても便利です。


Subversionのリポジトリ

Mercurialは分散リポジトリ形式の名の通り、リポジトリがいくつもあります。大きく3つの領域に分類できます。

他人のリポジトリ
他の人が変更しコミットしているリポジトリです。他人の〜と言っても誰が作ったかではなくて、ローカルリポジトリ以外のリポジトリは全て他人です。
どこにあっても良いので、オフラインではアクセスできないかも知れません。
ローカルリポジトリ
自分がコミットする対象としているリポジトリです。HDDなどに置きます。オフラインでもアクセスできます。
作業コピー
実際に作業してファイルを変更する場所です。変更後はローカルリポジトリにコミットします。

以下の図でイメージを掴んでいただけるかと思います。


Mercurialのリポジトリ

実はmercurialの場合、ローカルリポジトリと作業コピーが同一の場所にあります。実用上は便利なんですが。説明する側から見るとやりづらいっすね。

オフラインでリポジトリにcommitできること、これこそが分散リポジトリ型の最大の利点です。
絵から分かる通りupdateもできます。オフライン状態でローカルリポジトリを変更できるのは自分だけだから意味無い?なんてこと言うんですか…。updateの節で詳しく説明しますが、バージョン管理のうまみはupdateで巻き戻せる点に有ります。

commit

作業コピーに対する変更点をローカルのリポジトリに反映させます。

push

pushできるのはリポジトリ同士なのでcommitしてからpushして下さい。そうでないと何も反映されません。

誰かが先にpushしていると、

$ hg push
pushing to /home/user/test-a
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

と警告されます。headとは最新状態のことです。ある地点を基点にブランチで枝分かれしていき、枝の末端が最新版となります。末端なのにheadというのも何だか変(※)ですけど、そういう用語なので仕方ないですね。

謎のキーワードheadがわかれば警告文の意味がわかります。このままpushすると最新の状態(head)が2つできるじゃない!何とかしなさいよ!!と言っているわけです。

図示すると以下のような感じです。


Mergeが必要な場合

この状態を解消するためには「誰かの変更」を取り入れる作業(pullしてmerge)が必要です。詳しくはpull, mergeの節を見て下さい。merge後はcommitしないと作業が進められなくなりますよっと。

警告文曰く、ブランチを作りたいならpush -fで作れるそうです。

(※)個人的にはleafの方がわかりやすいと思いますが、歴史的な経緯でしょうか?

pull

別のリポジトリにある変更点をローカルリポジトリに反映させます。さらに作業コピーに変更を反映させたければupdateをする必要があります。updateについては次節をご覧下さい。

update

作業コピーにローカルリポジトリの内容を反映させます。

他のリポジトリからpullした後は、通常はupdateをします。もし誰かが既に更新していた場合は「衝突」状態になります。その時は次節で説明するmergeを行って解決します。

別の使い方は「巻き戻し」です。○○という変更を入れる前に戻したい、1日前に戻したい、なんてことが簡単にできます。

merge(またはupdate -m)

他のリポジトリからpullした変更点をupdateしようとすると

abort: crosses branches (use 'hg merge' or 'hg update -C')

と、怒られることがあります。あなたがpullしたリポジトリに、誰かが先にpushしたことを表しています。

(ブランチの絵を入れます)

解消するためにmergeを行います。マージ用のプログラムが無い状態では、衝突したファイル名に .origが付加されてバックアップされます。

$ hg status
M a.txt
$ ls -1
a.txt
a.txt.orig
元のファイルa.txt
$ cat a.txt
a
b
c
ユーザA(自分)がコミットしたa.txt
$ cat a.txt
a
user a
c
ユーザB(他の人)がコミットしたa.txt
$ cat a.txt
a
user b
c

同じ行を変更しているので機械的にマージが出来ません。するとマージプログラムは以下のようにlocal(自分の変更部分)と、other(他の人の変更部分)を示して、どちらか選んでよ、もしくは良い感じに修正してよ。

衝突したファイルはどうなるかというと、

マージ失敗後のa.txt
$ cat a.txt
a
<<<<<<< local
user a
=======
user b
>>>>>>> other
c

修正後にcommitをお忘れ無く。

rollback(またはundo)

親リポジトリからpullした、あるいはcommitしたは良いけど、やっぱりやめたいときはrollback(またはundo) ができます。

ローカルのリポジトリを巻き戻します。最後にpull, またはcommitした部分まで戻りますが、二回以上は戻りません。

メモ置き場

後で調べて書きたいこと。

  • ブランチの消し方?
  • リポジトリを省略したときに操作の対象になるリポジトリの調べ方?
  • 誰でも書きつぶせるのは危ない、アクセスコントロール、パーミッションなど?

とーどー(TODO)

  • ビルド、make PREFIX=, PYTHON= あとはPYTHONPATHの設定あたり?
  • statusとlog(tipまたはhistory)の説明も
  • cloneとinitの説明も
  • リポジトリ作成、clone -> コミット、プル、プッシュ、マージの一通りの流れ、実例交えて

使った感想

オフラインコミットは便利d(・∀・)イイ!

昔はそう思ってました、今はリポジトリが散らばりすぎて何だかわからなくなった俺ガイル…なんてことにならないように、ある程度の規模を扱う予定ならば運用ルールを敷きましょう。

本格的に使ってないので予想の域を出ませんが、リポジトリが大量にできるうえに全リポジトリが平等なので、集中リポジトリ型よりめちゃくちゃになりやすい気がします。

編集者:すずき(2025/05/21 23:32)

コメント一覧

  • IKeJIさん(2008/06/03 06:50)
    この勢いでgitやsvkもぜひ(w

    >(※)個人的には leaf の方がわかりやすいと思いますが、歴史的な経緯でしょうか?
    ブランチをleafと呼ぶと、そのブランチは更新できないような気がしてしまいます。
  • hdkさん(2008/06/03 07:24)
    タイトルに typo がw

    いやあ便利ですよ。コレ使ってると Subversion のマージがクソに思えてきます。
  • すずきさん(2008/06/03 09:44)
    >IKeJI さん
    git は書きたい。svk は書くかどうかわからんす。
    確かに leaf だと更新できなさそうに見えますね。でも head はおかしい、代わりの呼び名が欲しいね…。

    >hdk氏
    少しずつ便利さのかけらを感じています。もう SVN には戻れない。
    マージプログラムって何使ってます?

    >タイトル
    うわ、まーきゅてぃあるってwww
    俺m9(^Д^)ぷぎゃー
open/close この記事にコメントする



2008年6月1日

野菜だらけ

Sena氏と買い出しに行って、野菜生活100を補充しました。元々あったやつと合わせて、40本くらいになった模様。意外と消費期限は長い(3ヶ月くらい)ので問題なし。

どかーんと冷蔵庫の上に積んでおいたら、同室の隣人が「なんか増えてません…?」って呆れてたけど、気のせい気のせいw

晩はびっくりドンキーで食ったんですが、40周年記念メニューを一押ししていました。まあいつもとおなじハンバーグですけど…。

イチゴミルクとマンゴージュースはおいしかったなあ。どちらも果肉成分がたっぷり入ってるのは良いんだけど、ストローで飲むと詰まって出てきませんよー!二人ともスムーズに飲めなさすぎて、途中からなんだか笑えてきたよ。

編集者:すずき(2008/06/12 23:48)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年5月31日

さらに延滞

先日、同室の隣人からDVD返しておいてくださいな、と頼まれました。延滞してるから後で払います、よろしく〜と、彼は再び岡山へ旅立って行きました。いつも大変そうだなあ…。

で、そのDVDは本来昨日返すべきだったのですが、中の映画(ボーン・アルティメイタム)が気になって見てたら閉店時間を過ぎてしまった。余計に延滞してしまったぞ。

今日返したら4日延滞と言われ1,200円も取られた。延滞料金って高いのな…。

編集者:すずき(2008/06/12 23:34)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2008年5月30日

金曜は寿司の日

同期のSenaさんと寿司を食いに行きました。というか今更書かなくても毎週行ってますけど…。Senaさんは、寿司ばっか食ってる私に、飽きずによく付き合ってくれてありがたいです。

富田駅の近くにある権太呂寿司です。回らない寿司屋だけど2貫で126円(税込)と、値段は回転寿司並のリーズナブルさが良いのです。

最近はビントロばかり食ってます。あっさりなのかこってりなのか良くわからないこの感じが、何とも言えないぜ。

編集者:すずき(2008/06/12 23:25)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2008年6月8日 >>> 2008年5月26日
link もっと後

管理用メニュー

link 記事を新規作成

<2008>
<<<06>>>
1234567
891011121314
15161718192021
22232425262728
2930-----

最近のコメント5件

  • link 20年8月16日
    すずきさん (07/01 01:11)
    「そうですね。残念ながら私には向いてなかっ...」
  • link 20年8月16日
    ざんねんさん (06/29 17:12)
    「ゲーム内容を理解していない人の残念な雑記」
  • link 24年6月17日
    すずきさん (06/05 23:32)
    「Thnaks for your info...」
  • link 24年6月17日
    Bobさん (06/04 09:25)
    「BindIPv6Only=no does...」
  • link 18年8月12日
    すずきさん (05/29 16:57)
    「コメントありがとうございます。\n\nこ...」

最近の記事20件

  • link 23年5月15日
    すずき (07/01 02:15)
    「[車 - まとめリンク] 目次: 車三菱FTOの話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替えるとしたら?FTO...」
  • link 13年3月25日
    すずき (07/01 02:15)
    「[免許の更新と車のレッカー] 目次: 車前回の免許更新は免許センターまで行ったのですが、遠いわ、混んでいるわ、で辟易したので、...」
  • link 13年3月27日
    すずき (07/01 02:14)
    「[車の修理が終わった] 目次: 車先日レガシィを運び込んだ(2013年3月25日の日記参照)ディーラーから電話があり「バッテリ...」
  • link 22年7月18日
    すずき (07/01 02:03)
    「[GNU tarのアーカイブ圧縮方式の判定] 目次: LinuxGNU tarのxオプションは圧縮されたtarでも正しく展開し...」
  • link 23年4月10日
    すずき (07/01 02:03)
    「[Linux - まとめリンク] 目次: Linux関係の深いまとめリンク。目次: RISC-V目次: ROCK64/ROCK...」
  • link 21年12月28日
    すずき (07/01 02:01)
    「[ゲーム - まとめリンク] 目次: ゲーム一覧が欲しくなったので作りました。PlayStation Vitaのアプリ達が寿命...」
  • link 22年8月6日
    すずき (07/01 02:00)
    「[ゲーム用PCを作ろう] 目次: ゲームずっとグラフィック性能のしょぼいノートPCでゲームをしていましたが、描画が遅すぎて「コ...」
  • link 15年9月20日
    すずき (07/01 01:53)
    「[PlayStation Vitaのアプリ達が寿命を迎えている] 目次: ゲームPS Vitaのfacebookアプリのサポー...」
  • link 21年1月30日
    すずき (07/01 01:48)
    「[PlayStation Vitaのアプリがめちゃ減っている] 目次: ゲーム久しぶりにPlayStation Vitaを起動...」
  • link 13年3月13日
    すずき (07/01 01:33)
    「[ffmpegビルドふたたび] 目次: Linux以前(2009年5月22日の日記参照)ビルドしたffmpegがいい加減古くな...」
  • link 10年9月5日
    すずき (07/01 01:24)
    「[レガシィ納車と大阪府内ドライブ] 目次: 車車(スバル レガシィB4 2.0 GT、AT車)も納車されたことだし、下道(R1...」
  • link 24年8月25日
    すずき (06/26 09:01)
    「[レガシィの7回目の車検完了&タイヤ交換(FALKEN AZENIS)] 目次: 車ディーラーまで車検の車を取りに行きました。...」
  • link 11年5月1日
    すずき (06/26 08:58)
    「[パンクしたのでタイヤ交換(DNA ECOS)] 目次: 車奥さん、友人とともに、ジャパン牧野店へ飲み物の買い出しに行きました...」
  • link 17年6月4日
    すずき (06/26 08:57)
    「[レガシィのタイヤ交換(DNA ECOS)] 目次: 車気づけば6年(2011年5月1日の日記参照)経過しており、ヒビ割れてい...」
  • link 17年6月7日
    すずき (06/26 08:53)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良? - USB 3.0をざっくり調べる] 目次: PC先日(2017年6...」
  • link 17年6月5日
    すずき (06/26 08:50)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良? - USB 3.0と2.5GHzの関係] 目次: PC以前(2017...」
  • link 24年7月7日
    すずき (06/26 08:50)
    「[PC - まとめリンク] 目次: PC一覧が欲しくなったので作りました。 スピーカーGX-D90故障ノートPCの内蔵サウンド...」
  • link 17年6月2日
    すずき (06/26 08:48)
    「[USB 3.0を使うとワイヤレスキーボードの動作不良?] 目次: PCサーバのワイヤレスキーボードが妙に調子悪くて不思議だっ...」
  • link 25年6月19日
    すずき (06/25 21:50)
    「[歴代据え置きハードのCPUとGPU] 目次: ゲーム最近、据え置きハードのCPUとGPUがNVIDIAとAMDに収束していま...」
  • link 25年6月18日
    すずき (06/22 23:33)
    「[Nintendo Switch 2当選] 目次: ゲームSwitch 2の抽選4回目で当選してました。わーい。今回も落選だっ...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDFファイル RSS 1.0

最終更新: 07/01 02:15