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

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2008/07/05(土) 22:37:01
もしかしてgit・Mercurialはディレクトリのrenameも管理外?
953デフォルトの名無しさん:2008/07/05(土) 22:55:30
>>952
Gitではrenameっていうかディレクトリ指定でmvになる。
やはりどっちかというとディレクトリというよりファイル達を移動した感じになるけど、
その後のマージとかはちゃんとうまくいくよ。
954デフォルトの名無しさん:2008/07/05(土) 23:36:15
>>944
初めの文と後の文の繋がりがわからない。

後の文に関しては確かにそう思う。
前者に関してはそうでもなくない?むしろかなりサクサクで、
パフォーマンス面から見れば優秀なほうだと思ってるんだけど。

パフォーマンスってのは別の意味を指してる?
955944:2008/07/05(土) 23:55:25
>>954
言葉が足りんかった。パフォーマンスっていうのはウィンドウズに限った性能のこと。

unixやlinux系の環境なら、たしかgitの方がパフォーマンス良かった気がするけど、
ウィンドウズに限って言うならcygwinで不可解なパフォーマンス低下があったり、
作ってる本人たちがwindowsでの性能が悪いことを認めてたりとあんまりいいイメージがない。

どっかでgit/mercurial/bazzarの比較表見てwindowsならhgがいいなと思ったんだが、url忘れた・・・。
956デフォルトの名無しさん:2008/07/06(日) 00:19:01
>>952
Mercurialは
hg ren ディレクトリ名
でOK
957952:2008/07/06(日) 01:20:21
>>953,956
回答thx。触ったことないんで参考になる。
もひとつ聞かせてくれ。mv・ren後に移動元を追跡できる? できるならどういう表示?

例えばSubversionなら、svn log -vで
----
r123 | user1 | ...
Changed paths:
A /trunk/dir2 (from /trunk/dir1:r122)
----
てな感じでコピー元のpathとrevisionを参照できるけど、
Git・Mercurialではどうなるんかな。
ディレクトリの記録は残らないけど、中のファイルのpathは追跡できるとかいう感じ?
958デフォルトの名無しさん:2008/07/06(日) 02:50:04
>>957
Mercurial の場合、 hg log -v -f dir2/foo
でdir2ディレクトリやfooファイルがリネームされていた場合に追跡表示する

抜粋すると、
changeset: 2:...
files: dir1/foo dir2/foo (左がリネーム前、右がリネーム後)

changeset: 1:...
files: dir1/bar dir1/foo (左がリネーム前、右がリネーム後)

まだあまり使ってないんで間違ってたらごめん
959デフォルトの名無しさん:2008/07/06(日) 08:43:32
結局、SCM製作者が、空のディレクトリのない運用しかしたことないだけな気がする
960デフォルトの名無しさん:2008/07/06(日) 08:49:01
>>957
Gitは内部機構としてはファイルの移動はサポートしていない。
なぜかというと、他の方法、例えばパッチ送付などでは移動情報は来ないため。
ユーザインタフェースとしては移動を検出することはできる。
$ git mv dir1 dir2
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: dir1/a.txt -> dir2/a.txt
#
$ git commit -m 'move dir1 to dir2.'
$ git log -p --follow dir2/a.txt
commit 1c082d5e6e8e3fa782a447069a664a4017599f3d
Author: デフォルトの名無しさん
Date: Sun Jul 6 08:33:20 2008 +0900

move dir1 to dir2.

diff --git a/dir1/a.txt b/dir2/a.txt
similarity index 100%
rename from dir1/a.txt
rename to dir2/a.txt

commit a35e09885bbf384da1613f21e655f997fe8b6946
Author: デフォルトの名無しさん
Date: Sun Jul 6 08:30:52 2008 +0900

add dir1
961デフォルトの名無しさん:2008/07/06(日) 11:06:20
>>959
diffやpatchの延長線で考えるとディレクトリは管理対象にならない気もする
962デフォルトの名無しさん:2008/07/06(日) 12:22:27
ファイルの内容と一緒にそのファイル名(リポジトリ中での絶対パス)の履歴も管理するなら、
ディレクトリツリーを管理対象とするという考え方も自然な気がする。

空のディレクトリを管理するのが目的じゃなく、あくまでそれは副次的な効果じゃね?
963デフォルトの名無しさん:2008/07/06(日) 15:59:07
>>937 に書いたけど
へぼい実装だと空ディレクトリが無いとき mkdir しないで単にファイル書き込みが失敗したりするんよ

だから空ディレクトリを扱えること自体はうれしいはず
964デフォルトの名無しさん:2008/07/06(日) 16:09:10
Eclipse自体をsubversionでバージョン管理してたときなんだが、
あれのプラグインの認識ってフォルダがあるかどうかでしてるのな。
そういうアプリケーションの場合、空のフォルダでも管理できた方が便利。
965デフォルトの名無しさん:2008/07/06(日) 16:26:30
Railsは実装がへぼいんだな…
966デフォルトの名無しさん:2008/07/06(日) 16:43:54
seasarとか空ディレクトリ用意してここに実装してくれという感じだな
967デフォルトの名無しさん:2008/07/06(日) 17:06:38
>>966
そういう意図を表すために空ディレクトリを使うってことになると不便だね。
まあドットファイル置いとけ、ってことらしいが。面倒かもしれん。
Gitは内部的にもディレクトリ自体をコンテンツと見做さないみたいだから、
たぶん今後変わることは無いと思う(たぶんhgも一緒なんじゃないかな)

Railsの人はこうやったらどう?なんていうのを見つけた。
find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec
touch {}/.gitignore \;
968デフォルトの名無しさん:2008/07/06(日) 17:36:35
Railsがつかいたきゃbzrつかえってこった
969デフォルトの名無しさん:2008/07/06(日) 18:04:35
rails 2.1はlogがないときは作るようになったハズ。
tmpとかはどうだったかね。
970デフォルトの名無しさん:2008/07/06(日) 18:44:58
つーか、今後git以外使うかもしれないのになんで、.gitignoreみたいな依存ファイル付くらにゃならんのだ。
腹ただしい
とはいえ、使わないほどの理由にもならんが
971デフォルトの名無しさん:2008/07/06(日) 19:24:24
>>970
いや別に.gitignoreじゃなくてもいいんだけどね。READMEとかでも。
何でもいいからファイルがあればディレクトリ作ってくれるから。
972デフォルトの名無しさん:2008/07/06(日) 19:31:06
.keepme
というのはときたま見かける。
973デフォルトの名無しさん:2008/07/06(日) 19:35:32
まあ、確かにそうか
974デフォルトの名無しさん:2008/07/07(月) 07:42:54
ディレクトリ管理で git/hg を止める理由にはならないが、
前にも書いたが mergeの問題があるので svnを止める
理由にはなった。
svnでも大抵の人は困らないと思うけどね。
975デフォルトの名無しさん:2008/07/07(月) 09:46:25
>>974
警告なく消滅するってのは痛いよなぁ.
976デフォルトの名無しさん:2008/07/07(月) 23:35:24
>>942
個人的にはWindows上でもCygwinを前提とするなら、MercurialよりGitが
自然に感じた。
たしかに、Linux kernelのような巨大プロジェクトを使うと、Windows版の
遅さが気になるが、個人や小規模の集団が使う程度では、ストレスは感じない。
Cygwinを使わなければ、WindowsでGitは使い物にならないのは、その通りだが。
977デフォルトの名無しさん:2008/07/08(火) 00:04:47
>>976
自然というのはどういう意味に?
純粋にSCMとしてMercurialよりも優れているという意味なのか、
それともWindows上での扱いに不自然さがないという意味なのか

もっとも自分はCygwinが必要な段階でカンベンに感じるのだが。
978デフォルトの名無しさん:2008/07/08(火) 00:22:11
>>977
後者だね。Windows上での扱いというより、Cygwin上での扱いという意味だけど。
Cygwinを使わないという前提なら、私は多少不便はあってもSubversionを使うと思う。
オフラインで持ち出すなら、レポジトリ自体をコピーして。
979デフォルトの名無しさん:2008/07/08(火) 01:34:19
>>978
Cygwinを前提にWindowsでの扱いが自然っていうのは全然理解できないのだけど。
Cygwinの存在自体がWindowsにとって無茶苦茶不自然だし、Cygwin云々って話なら、
gitもMercurialもsubversionもその自然さは変わらんと思うが。
980デフォルトの名無しさん:2008/07/08(火) 02:14:35
>>979
SubversionならCygwinは必要ないでしょ

Cygwinの不自然さには同意。
VMwareを導入して、ゲストOSにLinuxなんかを走らせるのはダメなんかな。
981デフォルトの名無しさん:2008/07/08(火) 07:29:19
>>980
それなら coLinux でいいじゃん・・・
982デフォルトの名無しさん:2008/07/08(火) 21:39:44
次スレ

バージョン管理システムについて語るスレ2
http://pc11.2ch.net/test/read.cgi/tech/1215520728/
983デフォルトの名無しさん:2008/07/08(火) 21:59:03
次スレもたったので

bzr revert .
984デフォルトの名無しさん:2008/07/08(火) 23:36:01
subversionの個別スレはLinux板のに統合かな?
985デフォルトの名無しさん:2008/07/09(水) 00:10:50
Subversinスレは、昔はLinux板にあったらしい。
986デフォルトの名無しさん:2008/07/09(水) 00:14:23
subvirginスレは、どこにありますか?
987デフォルトの名無しさん:2008/07/09(水) 01:02:11
サブ
うほっ
988デフォルトの名無しさん:2008/07/09(水) 08:14:43
>>934-941
空のディレクトリが必要な場合はあるよ。
たとえば logs ディレクトリを作っておくとか。
たとえば site-packages ディレクトリを作っておくとか。
ファイルはなくても、ディレクトリ構造は決めておきたいときってのはあるだろ?
そんなときに、logs にログじゃないダミーファイルいれたり、site-packages にライブラリじゃないダミーファイルを入れるのは、ちょっとやだ。
989デフォルトの名無しさん:2008/07/09(水) 17:58:25
>>988
>ちょっとやだ。
ちょっとくらいガマンしなさい!
ワガママばかり言っちゃいけません!
990デフォルトの名無しさん:2008/07/09(水) 22:57:19
>>988
空のディクトリなら、何の用途に使うか書いた簡単なテキストファイルを
置いておくのは、悪い考えでは無いと思うぞ。
ディレクトリにはコメント付けられない訳だしさ。
991デフォルトの名無しさん:2008/07/09(水) 23:02:35
>>990
logs とか用途なんて分かりきっているから必要ないし、何に使うかわかるような
名前にしていれば、ふつうはディレクトリごとに説明用のファイルなんていらない。

べつにディレクトリが管理できないならできないで回避策はあるからそう困るわけじゃないんだけど、
ディレクトリを管理対象にできないのが正しい、管理対象にしようとすることが間違いだ、
とでもいうような主張が散見されるので、ちょっと反論してみた。
992デフォルトの名無しさん:2008/07/09(水) 23:18:54
cvsではできたよね、たしか。
993デフォルトの名無しさん:2008/07/09(水) 23:39:20
CVSでは、もともとファイル1つだけを対象とするRCSのフォーマットを
流用している都合もあって、ディレクトリは管理してない。
994デフォルトの名無しさん:2008/07/09(水) 23:39:59
cvsはできないよ。
必要な空ディレクトリはファイル置かないといけない
995デフォルトの名無しさん:2008/07/09(水) 23:47:48
あと、消したディレクトリの残骸がレポジトリ(ただのディレクトリ)に
ずっと残るしな。
996デフォルトの名無しさん:2008/07/10(木) 08:49:29
>>994
それは -P オプション付けたときだろ。
-P オプション付けなければ、チェックアウト時にしっかり出てくる。

インポートは面倒だから、リポジトリに空のディレクトリ追加してそれをチェックアウト、
そこに必要なファイルを add していくなんてのはよくやる方法。
997デフォルトの名無しさん:2008/07/10(木) 13:42:51
update -dってのもあるね。
998デフォルトの名無しさん:2008/07/10(木) 16:20:14
>>996
何いってんだオメエ
いらなくなった空のディレクトリもチェックアウトででてくるだろが
結局、運用上はファイル置かないといけない
999デフォルトの名無しさん:2008/07/10(木) 16:36:54
バージョン管理システムについて語るスレ2
http://pc11.2ch.net/test/read.cgi/tech/1215520728/
1000デフォルトの名無しさん:2008/07/10(木) 16:38:24
>>998
あーなるへそ。
そんなに不要なディレクトリ作ったことなかったから気付かなかった。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。