トップページ⇒tech
1001コメント314KB

バージョン管理システムについて語るスレ3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/12/04(木) 14:02:52
バージョン管理システムについて語りましょう。

関連スレ
CVS 1.3 [UNIX板]
http://pc11.2ch.net/test/read.cgi/unix/1093611448/
CVS導入スレ〜 Rev.3 [プログラム板]
http://pc11.2ch.net/test/read.cgi/tech/1113141518/
Subversion r10 [プログラム板]
http://pc11.2ch.net/test/read.cgi/tech/1215565366/
subversion バージョン管理【サブバージョン】 [Linux板]
http://pc11.2ch.net/test/read.cgi/linux/1154701996/
git スレッド [Linux板]
http://pc11.2ch.net/test/read.cgi/linux/1197798039/
Bazaarでバージョン管理【bzr>git,svn,cvs】 [プログラム板]
http://pc11.2ch.net/test/read.cgi/tech/1218083381/

前スレ
バージョン管理システムについて語るスレ2
http://pc11.2ch.net/test/read.cgi/tech/1215520728/
前前スレ
バージョン管理システムについて語るスレ
http://pc11.2ch.net/test/read.cgi/tech/1193332500/
0153デフォルトの名無しさん2008/12/20(土) 13:01:56
>>152
Gitは差分じゃないよ。hgはたしか差分。
0154デフォルトの名無しさん2008/12/21(日) 12:22:34
>>150
>状態記録パラダイムのソフト(Mercurial, Bazaar)で、パッチ集積パラダイム(darcs)の
>機能を実現しようとするから、複雑になったり泥縄的になったりするんじゃないかな。


これ、もっと詳しく知りたい。教えてえらいひと!
0155デフォルトの名無しさん2008/12/21(日) 14:17:34
mercurial 1.1.1 release
0156デフォルトの名無しさん2008/12/23(火) 00:19:48
>>154
version1 = version0 + 機能1
version2 = version1 + 機能2
version3 = version2 + 機能3
と考えたときに、機能1がいらなくなったとしよう。
そのときパッチ集積パラダイム(チェンジセット指向)だと
version4 = version0 + 機能2 + 機能3
ということができる。
hg,bzrみたいなスナップショット指向は
versionXしか扱えないからダメ。
MQでもこういう事はできるけどMQはローカルでのパッチ管理なので
みんなでパッチを共有することはできない。
hgがたとえ内部で差分管理していても
その差分に名前が付けられていないからユーザは手が出せない。
0157デフォルトの名無しさん2008/12/23(火) 02:05:52
Mercurialの公式wikiの翻訳って今どうなってるの?
誰かやりかけてるの有る? hgbookは誰かやってるんだっけ?
0158デフォルトの名無しさん2008/12/23(火) 10:37:21
>>156
サンクス。
ただ、これだと「機能1の機能を消すパッチ」を当てればいいだけだと思うんだけど、どうでしょうか?
機能1 をrevertするようなパッチを作成する機能ってたしかgitとかhgにあったと思います。

あと、>>150はもともと>>148の
>なんでdarcsだと二重マージを防げるの?
という質問への返答なので、なぜdarcsだと二重マージを防げるかを、パッチ集積パラダイムの点から説明していただけると、スレ的にはうれしい。
0159デフォルトの名無しさん2008/12/24(水) 01:00:57
>>75
基本的な動作はいい感じだけど、やっぱり物足りない部分が多いかな

boostぶち込んでもレスポンスいいのはなかなか
0160デフォルトの名無しさん2008/12/25(木) 21:41:44
git branch
すると
* (no branch)
というのがでてこまってます。どうやったらこれを消せるんでしょうか。
git branch -d '(no branch)
ではだめでした。
たすけてください!
0161デフォルトの名無しさん2008/12/25(木) 21:58:15
>>160
rm -rf .git
0162デフォルトの名無しさん2008/12/25(木) 22:13:22
>>160
一時的な無名ブランチなので、他をチェックアウトすれば消える。
0163デフォルトの名無しさん2008/12/26(金) 02:45:27
git push したらこんなエラーが出た。

$ git push
Counting objects: 116, done.
Compressing objects: 100% (85/85), done.
Writing objects: 100% (112/112), 40.38 KiB, done.
Total 112 (delta 32), reused 54 (delta 0)
To [email protected]:username/project-name.git
8644ee0..dccb472 master -> master
! [rejected] experiment -> experiment (non-fast forward)
error: failed to push some refs to '[email protected]:username/project-name.git'

experiment ブランチでなにかエラーになっているようだけど、さっぱりわからん。
おしえてえらいひと。
0164デフォルトの名無しさん2008/12/26(金) 14:12:20
そもそもマージは人間がやるべきだよ。
バージョン管理システムは構文は見ないわけだし。
0165デフォルトの名無しさん2008/12/26(金) 19:41:07
>>163
fast forward出来ないってことは、誰かがあなたより先にそのブランチにpushした
ってことだと思う。
git fetch とか git rebase で真っ直ぐにする必要があると思う。
しかしgithubで誰かとブランチ共用してるのか。まあそういうやり方もありか。

0166デフォルトの名無しさん2008/12/26(金) 22:48:11
自動のマージに任せるととんでもないことになるから、
必ず手動でマージしてから自動のマージを走らせて、
変わった所をチェックしてるわ。
0167デフォルトの名無しさん2008/12/27(土) 13:37:26
>157の件だけど、誰もやりかけてるのはないって事でいいのかな?
この休み中に少しだけでも翻訳しようかなって感じなんだけど。
hgbookは、一度どっかに訳があがってたけど、今は無いみたい(?)

ちなみに、公式FAQの足りない所や英語版と食い違ってるところを訳そうかなぁと
思ってる。
0168デフォルトの名無しさん2008/12/27(土) 13:53:04
gitって名前がダサイ。
0169デフォルトの名無しさん2008/12/27(土) 13:54:44
>>166
svn以前のマージって確かにひどい。ゴミだったな、ありゃ。
0170デフォルトの名無しさん2008/12/28(日) 13:18:44
>>169
CVSのマージで困ったことはないけど最近はもっと便利になってるの?
0171デフォルトの名無しさん2008/12/29(月) 05:13:58
なってる。
0172デフォルトの名無しさん2008/12/29(月) 10:48:16
具体的にはどう便利に?
0173デフォルトの名無しさん2008/12/29(月) 11:40:02
git blame -M/-Cってすごいなぁとおもって
ソースみてみたけどロジックがわからんかった orz
ほかのvcにはないよねこういうの
0174デフォルトの名無しさん2008/12/30(火) 19:56:59
>>173
いらないwww
0175デフォルトの名無しさん2008/12/31(水) 16:04:33
Gitでコミットの順番をいれかえるのってどうしたらいいの?
なんかGitではそういうことができると聞いたんだけど。
0176デフォルトの名無しさん2009/01/01(木) 15:03:39
Mercurial 1.1.2 release
0177デフォルトの名無しさん2009/01/01(木) 15:14:46
>>175
大体こんな感じ。
git reset HEAD^
git stash save
git reset HEAD^
git stash save
git stash apply stash@{1}

でもこれで入れ替えられるのは多分、diffの範囲が十分に離れている場合だけ。
近すぎるとコンフリクトすると思う。
0178デフォルトの名無しさん2009/01/01(木) 16:28:22
>>177
えー、むちゃむちゃ手作業じゃないですか。そういうものですか。
あとこの方法だと、ログメッセージも手作業で指定することになりますよね。

だまされたのかな。Git には、パッチの順番を入れ替える直接的な機能はないということでFA?
0179デフォルトの名無しさん2009/01/01(木) 16:43:46
$ git rebase -i HEAD~2
で $EDITOR が起動する. 説明は書いてあるのでそのようにすればいい.
簡単にいえば行毎にコミットがかいてあるのでそれを入れ換えばいい.
0180デフォルトの名無しさん2009/01/05(月) 11:07:46
TortoiseHGでアイコンオーバーレイは、TortoiseSVNが入ってないと使えなかったりする?
0181デフォルトの名無しさん2009/01/05(月) 18:54:32
>>180
アイコンオーバーレイだけインストールできるよ。Hgは試したことないけどTortoiseBzrではうまくいった。
http://tortoisesvn.tigris.org/source/browse/tortoisesvn/TortoiseOverlays/
0182デフォルトの名無しさん2009/01/05(月) 23:00:05
>>181
サンクス。明日会社でやってみる。
0183デフォルトの名無しさん2009/01/05(月) 23:21:19
TortoiseHgはオーバーレイでるよ。
インスコ後OS再起動していないとか
0184デフォルトの名無しさん2009/01/07(水) 11:12:45
git では $HOME/.gitconfig に alias が設定できます。
しかしたとえば commit の alias として ci を登録すると、zsh の補完が効かなくなります。
つまり、git commit なら効く補完が、git ci だと効かないわけです。
あたりまえといえば当たり前なんですけど、git commit での補完が git ci でも効くようにするにはどうしたらいいでしょうか。
0185デフォルトの名無しさん2009/01/07(水) 11:22:45
zshのドキュメントを読めばいいんじゃない?
0186デフォルトの名無しさん2009/01/07(水) 11:55:54
gitのページがかわいくなったw
0187デフォルトの名無しさん2009/01/07(水) 14:40:33
どーもくんみたいのがバナーにいるな
0188デフォルトの名無しさん2009/01/07(水) 14:41:18
Git - Fast Version Control System
http://git-scm.com/
0189デフォルトの名無しさん2009/01/07(水) 15:00:40
ほんとだドーモくんに似てるw
0190デフォルトの名無しさん2009/01/07(水) 21:18:57
なんできのこの山(抹茶味)食べてるん?
0191デフォルトの名無しさん2009/01/07(水) 21:38:12
>>190
うまいからじゃね?
0192デフォルトの名無しさん2009/01/07(水) 23:21:37
ドーモくんもGPLだったんだな。
0193デフォルトの名無しさん2009/01/08(木) 03:28:19
どう見てもドーモくんです。
0194デフォルトの名無しさん2009/01/08(木) 10:28:05
食べすぎて太ってるな
0195デフォルトの名無しさん2009/01/09(金) 16:04:13
普段gitである程度まとまったらsf.netのsvnにgitの結果をなげるとかできる?
0196デフォルトの名無しさん2009/01/09(金) 16:24:03
mercurialでaddを取り消すことはできない?
addまではできるが、ファイル名の関係でcommiit出来ないからaddを取り消したいんだが…。
01971962009/01/09(金) 16:29:01
申し訳ない。調査が足りなかった。
反省してる。
0198デフォルトの名無しさん2009/01/09(金) 18:09:01
>>157
hgbookは ttp://freehg.org/u/honeyplanet/hgbook/ に作業中のが。
0199デフォルトの名無しさん2009/01/09(金) 19:39:31
>>195
git-svnで出来るよ。
sf.jpなら直でGitいける。
0200デフォルトの名無しさん2009/01/10(土) 02:14:40
>198
そのURL、公式wikiの日本語版トップページからリンクしとけばいいんじゃない?
存在を知らない人が二重に訳し始めたら無駄だし。
0201デフォルトの名無しさん2009/01/10(土) 12:17:54
>>195
こんな感じかな

svn からごっそりclone
$ git svn clone rep_url -T trunk -b branches -t tags

svn の branch を確認して
$ git branch -r
svn の branch を git の branch に紐付けして checkout
$ git checkout -b git_branch svn_branch

git の local branch を作ってゴソゴソ作業
$ git branch local_branch

まとまったら、紐付けされた branch に戻って merge
$ git checkout git_branch
$ git merge local_branch --no-ff

svn に送る
$ git svn dcommit
0202デフォルトの名無しさん2009/01/11(日) 18:47:34
一つ質問させてください。

今までmonotoneを使っていて、最近新しくgitを使い始めたのですが
monotoneでのcheckoutや、subversionでのexportのように
「ローカルレポジトリの内容を展開する」ことが可能なコマンドは無いでしょうか?

たとえば、カレントディレクトリに .git だけがあって、その他には何もファイルが無いとき

git export

と実行すれば、その位置にレポジトリの内容が展開される……
というような事がやりたいのですが、その方法が分からずに悩んでいます。
0203デフォルトの名無しさん2009/01/11(日) 19:27:29
git checkout .
0204デフォルトの名無しさん2009/01/11(日) 20:42:44
>>203
checkoutするとファイル一覧は表示されるのですが、実際に展開が行われている様子はありません

D  file1
D  file2
D
...
0205デフォルトの名無しさん2009/01/11(日) 20:45:43
>>204
`.`
02062042009/01/11(日) 21:04:14
>>205
すみません、ピリオドを見落としていました。ありがとうございます!
0207デフォルトの名無しさん2009/01/15(木) 06:43:22
http://www.atmarkit.co.jp/fjava/rensai4/devtool03/devtool03_1.html
間違いだらけで笑えるwww
0208デフォルトの名無しさん2009/01/15(木) 08:00:33
分散型童貞の俺にどこが間違っているのかkwsk
0209デフォルトの名無しさん2009/01/15(木) 09:13:46
そもそも中央リポジトリがなくてもいいのが分散型の意義じゃねーの?
0210デフォルトの名無しさん2009/01/15(木) 09:32:15
>209
それ、ちゃんと記事に書いてあるじゃん。
で、どこが間違ってるの?
0211デフォルトの名無しさん2009/01/15(木) 14:16:53
>>207
うーむ、TortoiseBzr のところで、いつのまにか Mercurial になってたのは笑ったけど、
個人的な見解含めて特におかしな記事だとは思えんがなあ。
0212デフォルトの名無しさん2009/01/15(木) 17:13:31
>>207
文字コードの話はろくに設定もしないで言いがかりに近いんじゃないかね。
0213デフォルトの名無しさん2009/01/15(木) 18:24:43
>>207
自分で使い込んでる感じがしないよね。どうしてもSVN中心に考えている感じ
0214デフォルトの名無しさん2009/01/15(木) 18:38:04
HGの綴り間違えてるし相当適当じゃないかその記事
0215デフォルトの名無しさん2009/01/15(木) 19:57:22
>>213
結論がSVNを中央リポジトリにしてクライアントを分散型にするのがいいとか言ってるやつだぜwww
0216デフォルトの名無しさん2009/01/15(木) 22:40:59
間違いだらけ、とまでは行かないが使い込んでない感はあるなぁ。


結論だけは、・・・・・無いな。これは馬鹿。
道具を増やしたら、複雑になるだけだろうが・・・
0217デフォルトの名無しさん2009/01/16(金) 00:50:27
git stash すると、一時的なコミットが作成されますよね?
連続してgit stashしてから、その順番を入れ替えてもとに戻したいんですけど、できますか?
git stash # 1 回目 (小さめ)
git stash # 2 回目(小さめ)
git stash # 3回目(けっこう大きい)
git pop # ここで1回目と2回目のを先に戻してcommitしたい

こんな説明で伝わるかわかりませんが、もしご存知の方がおられましたらお願いします。
0218デフォルトの名無しさん2009/01/16(金) 06:47:04
git stash list
git stash apply stash@{1}
git stash apply stash@{2}
git stash apply stash@{0}
みたいな感じか?

ただしindexが違うから確実にマージされるとは限らないので、
コンフリクトが出たら手動でマージする必要があると思う。

最近この辺のインデックスとかの挙動がようやく分かってきたが、まだまだ曖昧だな。
0219デフォルトの名無しさん2009/01/16(金) 08:47:22
>>216
無理して話に加わらなくていいよ
0220デフォルトの名無しさん2009/01/16(金) 12:26:56
>>218
サンクスコ
そうやって名前を指定できるのね。
git stash applyのかわりに、git stash popで名前を指定できるのかな。
試してみる。
0221デフォルトの名無しさん2009/01/16(金) 14:22:38
manualを読めばちゃんと書いてあるのに。
0222デフォルトの名無しさん2009/01/16(金) 19:01:30
TortoiseHgで指定のmergeツールを使う方法がよくわからないのですが、
教えていただけないでしょうか・
p4mergeを指定しているのですが、なぜか kdiff?とかいうのが立ち上がります

Mercurial.ini には、
[ui]
username = alpaca
merge = p4merge

[tortoisehg]
vdiff = p4merge

[extdiff]
cmd.p4merge = c:\soft\Perforce\\p4merge.exe

というような設定をしています。

vdiffの方は無事にp4mergeが立ち上がりようです。
(とはいえこちらも複数ファイル(3つ以上?)ある場合にまともに起動しなくて困ってます。
多くのエンコーディングに対応した複数ファイルを開けるvdiffツールあればオススメ教えてください)

02232222009/01/16(金) 19:53:45
TortoiseHgのmergeツールの件うまくいきました!
検索で引っかかったマニュアルしっかりよんだら理解できました

MergeToolConfiguration - Mercurial
http://www.selenic.com/mercurial/wiki/index.cgi/MergeToolConfiguration

どうもデフォルトの設定(hg showconfigで確認)ではレジストリからパス?を読むようになってまして、
以前のOSでインストールしたものをそのままこぴぺでつかってたため、おきたようです。
とりあえず、Mercurial.ini に以下を突っ込んだところ無事立ち上がりました。

[merge-tools]
p4merge.executable=c:\soft\Perforce\\p4merge.exe


ありがとうございました。
0224デフォルトの名無しさん2009/01/16(金) 22:46:05
>>223
>ありがとうございました。
何に?w
0225デフォルトの名無しさん2009/01/17(土) 03:48:35
まぁ人に説明してると解決するって事もよくある
02262222009/01/17(土) 16:37:38
> [merge-tools]
> p4merge.executable=c:\soft\Perforce\\p4merge.exe

p4merge.executable=c:\soft\Perforce\p4merge.exe

の間違いです。関係ないと思いますが、一応訂正
0227デフォルトの名無しさん2009/01/17(土) 16:46:45
Mercurialの質問よろしいでしょうか?

特定のリビジョン間のパッチを取る簡単な方法(コマンド)はないでしょうか?
cloneして特定リビジョンにupdateして、双方でdiffとるしかないですかね?
02282272009/01/17(土) 17:01:13
TortoiseHgでいけました。
View changelog を開いて
特定リビジョンをクリックして選択、diffりたいリビジョンを右クリック→diff or visual diff
で特定リビジョン間の差分を見られました。

お手をわずらわせ失礼しました。
0229デフォルトの名無しさん2009/01/17(土) 17:08:13
>>227
cloneは必要ないのでは?
リビジョン指定してupdateとdiffするだけでしょ。
0230デフォルトの名無しさん2009/01/17(土) 21:21:14
>>229
updateもいらない。
hg diff -r REV1 -r REV2
0231デフォルトの名無しさん2009/01/18(日) 13:28:52
GNOME DVCS Survey results
http://blogs.gnome.org/newren/2009/01/03/gnome-dvcs-survey-results/
0232デフォルトの名無しさん2009/01/18(日) 17:45:24
ありがたいことに日本語訳もある
ttp://tt25.org/blog/20090106/gnome-dvcs-survey
0233デフォルトの名無しさん2009/01/18(日) 19:39:03
2009-01-18 TortoiseHg 0.6 (with Mercurial 1.1.2) released!

誰か試してみて。
02341962009/01/18(日) 19:47:16
>>233
試してみる。
結果は教えられない。
02352272009/01/19(月) 02:48:47
>>229-230
サンクス!diffでリビジョン指定できたのね。
0236デフォルトの名無しさん2009/01/19(月) 05:30:45
hg で.hgignoreに追加する前に追加されたと思わしきファイルがあります。
(.hgignoreで一致しているパターンなのに、hg stででてくる)
そのファイルを後から無視することはできないのでしょうか?

一旦削除するしかないのでしょうか?
0237デフォルトの名無しさん2009/01/19(月) 06:09:23
>236
hg remove --after でいけたはず。
02381962009/01/19(月) 15:13:17
TortoiseHG0.6入れたんだが、Commitツールが変わったっぽい?
addとかと同じUIになって日本語ファイル名も表示されてるんだが。
0239デフォルトの名無しさん2009/01/20(火) 16:38:32
git commit
したときにviが起動するんですが、よく :wq ではなくて :q をしてしまいます。
つまり、コミットメッセージを書いたのに保存せずに終了してしまい、コミットされないことがあります。
自分のポカが原因ではありますが、viを終了したときに、保存してなければ Are you sure? とかなんとか、確認のメッセージを出すようにできませんか?
よろしくお願いします。
0240デフォルトの名無しさん2009/01/20(火) 16:53:21
vi って、修正後保存せずに :q しても、「変更がほぞんされてねーぜ jk」て言われて
終了できないんじゃなかったっけ?無理やり終了は :q!
この安全策にはいつもお世話になってるけど。
0241デフォルトの名無しさん2009/01/20(火) 17:22:53
いつもZZで終わらせてるなあ
0242デフォルトの名無しさん2009/01/20(火) 18:32:49
>>240
あれ、そういえばそうですよね。
なんで git commit のときは確認してくれないんだろ?
0243デフォルトの名無しさん2009/01/20(火) 22:17:07
>>242
なんでだろうね。EDITOR環境変数は何になってる?
0244デフォルトの名無しさん2009/01/20(火) 22:39:28
>>243
$ ech $EDITOR

なにもなしでした。
環境依存っぽいですね。当方 MacPorts 1.7, git --version 1.6.1 です。
0245デフォルトの名無しさん2009/01/21(水) 05:22:47
水銀本
ttp://www.amazon.co.jp/dp/4798021741
0246デフォルトの名無しさん2009/01/21(水) 09:32:40
お、このオッサン頑張ってると思ったらついに本出したか。
でも心は Bazaar に傾きつつあったり…。
0247デフォルトの名無しさん2009/01/21(水) 12:33:53
>246
何故傾いたのか聞きたい。
0248デフォルトの名無しさん2009/01/21(水) 13:29:44
ファイル名
0249デフォルトの名無しさん2009/01/21(水) 19:58:38
Bazaar本も出ないかなー
0250デフォルトの名無しさん2009/01/21(水) 21:38:42
VisualStudioにhgのプラグインを組み込んでみたけど
思っていたよりも便利だな。

プラグインが何も入っていない状態だとVSにソース管理の
メニューが全く出てこないから、ろくな機能ないと思ってたw

ただ、今配布されてるhgプラグインはイマイチだね。
最新以外のリビジョンからソースを取り出せないし、
ドキュメントの類は一切無いからインストールの仕方も
よく分からなかった。
0251デフォルトの名無しさん2009/01/22(木) 00:40:12
流行ってる割にgitの本も無いよな
0252デフォルトの名無しさん2009/01/22(木) 01:10:45
gitの本はPragProgから出たばかり。
■ このスレッドは過去ログ倉庫に格納されています