もしかしてgit・Mercurialはディレクトリのrenameも管理外?
>>952 Gitではrenameっていうかディレクトリ指定でmvになる。
やはりどっちかというとディレクトリというよりファイル達を移動した感じになるけど、
その後のマージとかはちゃんとうまくいくよ。
>>944 初めの文と後の文の繋がりがわからない。
後の文に関しては確かにそう思う。
前者に関してはそうでもなくない?むしろかなりサクサクで、
パフォーマンス面から見れば優秀なほうだと思ってるんだけど。
パフォーマンスってのは別の意味を指してる?
955 :
944:2008/07/05(土) 23:55:25
>>954 言葉が足りんかった。パフォーマンスっていうのはウィンドウズに限った性能のこと。
unixやlinux系の環境なら、たしかgitの方がパフォーマンス良かった気がするけど、
ウィンドウズに限って言うならcygwinで不可解なパフォーマンス低下があったり、
作ってる本人たちがwindowsでの性能が悪いことを認めてたりとあんまりいいイメージがない。
どっかでgit/mercurial/bazzarの比較表見てwindowsならhgがいいなと思ったんだが、url忘れた・・・。
>>952 Mercurialは
hg ren ディレクトリ名
でOK
957 :
952: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は追跡できるとかいう感じ?
>>957 Mercurial の場合、 hg log -v -f dir2/foo
でdir2ディレクトリやfooファイルがリネームされていた場合に追跡表示する
抜粋すると、
changeset: 2:...
files: dir1/foo dir2/foo (左がリネーム前、右がリネーム後)
changeset: 1:...
files: dir1/bar dir1/foo (左がリネーム前、右がリネーム後)
まだあまり使ってないんで間違ってたらごめん
結局、SCM製作者が、空のディレクトリのない運用しかしたことないだけな気がする
>>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
>>959 diffやpatchの延長線で考えるとディレクトリは管理対象にならない気もする
ファイルの内容と一緒にそのファイル名(リポジトリ中での絶対パス)の履歴も管理するなら、
ディレクトリツリーを管理対象とするという考え方も自然な気がする。
空のディレクトリを管理するのが目的じゃなく、あくまでそれは副次的な効果じゃね?
>>937 に書いたけど
へぼい実装だと空ディレクトリが無いとき mkdir しないで単にファイル書き込みが失敗したりするんよ
だから空ディレクトリを扱えること自体はうれしいはず
Eclipse自体をsubversionでバージョン管理してたときなんだが、
あれのプラグインの認識ってフォルダがあるかどうかでしてるのな。
そういうアプリケーションの場合、空のフォルダでも管理できた方が便利。
Railsは実装がへぼいんだな…
seasarとか空ディレクトリ用意してここに実装してくれという感じだな
>>966 そういう意図を表すために空ディレクトリを使うってことになると不便だね。
まあドットファイル置いとけ、ってことらしいが。面倒かもしれん。
Gitは内部的にもディレクトリ自体をコンテンツと見做さないみたいだから、
たぶん今後変わることは無いと思う(たぶんhgも一緒なんじゃないかな)
Railsの人はこうやったらどう?なんていうのを見つけた。
find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec
touch {}/.gitignore \;
Railsがつかいたきゃbzrつかえってこった
rails 2.1はlogがないときは作るようになったハズ。
tmpとかはどうだったかね。
つーか、今後git以外使うかもしれないのになんで、.gitignoreみたいな依存ファイル付くらにゃならんのだ。
腹ただしい
とはいえ、使わないほどの理由にもならんが
>>970 いや別に.gitignoreじゃなくてもいいんだけどね。READMEとかでも。
何でもいいからファイルがあればディレクトリ作ってくれるから。
.keepme
というのはときたま見かける。
まあ、確かにそうか
ディレクトリ管理で git/hg を止める理由にはならないが、
前にも書いたが mergeの問題があるので svnを止める
理由にはなった。
svnでも大抵の人は困らないと思うけどね。
975 :
デフォルトの名無しさん:2008/07/07(月) 09:46:25
>>942 個人的にはWindows上でもCygwinを前提とするなら、MercurialよりGitが
自然に感じた。
たしかに、Linux kernelのような巨大プロジェクトを使うと、Windows版の
遅さが気になるが、個人や小規模の集団が使う程度では、ストレスは感じない。
Cygwinを使わなければ、WindowsでGitは使い物にならないのは、その通りだが。
>>976 自然というのはどういう意味に?
純粋にSCMとしてMercurialよりも優れているという意味なのか、
それともWindows上での扱いに不自然さがないという意味なのか
もっとも自分はCygwinが必要な段階でカンベンに感じるのだが。
>>977 後者だね。Windows上での扱いというより、Cygwin上での扱いという意味だけど。
Cygwinを使わないという前提なら、私は多少不便はあってもSubversionを使うと思う。
オフラインで持ち出すなら、レポジトリ自体をコピーして。
>>978 Cygwinを前提にWindowsでの扱いが自然っていうのは全然理解できないのだけど。
Cygwinの存在自体がWindowsにとって無茶苦茶不自然だし、Cygwin云々って話なら、
gitもMercurialもsubversionもその自然さは変わらんと思うが。
>>979 SubversionならCygwinは必要ないでしょ
Cygwinの不自然さには同意。
VMwareを導入して、ゲストOSにLinuxなんかを走らせるのはダメなんかな。
981 :
デフォルトの名無しさん:2008/07/08(火) 07:29:19
>>980 それなら coLinux でいいじゃん・・・
次スレもたったので
bzr revert .
subversionの個別スレはLinux板のに統合かな?
Subversinスレは、昔はLinux板にあったらしい。
subvirginスレは、どこにありますか?
サブ
うほっ
>>934-941 空のディレクトリが必要な場合はあるよ。
たとえば logs ディレクトリを作っておくとか。
たとえば site-packages ディレクトリを作っておくとか。
ファイルはなくても、ディレクトリ構造は決めておきたいときってのはあるだろ?
そんなときに、logs にログじゃないダミーファイルいれたり、site-packages にライブラリじゃないダミーファイルを入れるのは、ちょっとやだ。
>>988 >ちょっとやだ。
ちょっとくらいガマンしなさい!
ワガママばかり言っちゃいけません!
>>988 空のディクトリなら、何の用途に使うか書いた簡単なテキストファイルを
置いておくのは、悪い考えでは無いと思うぞ。
ディレクトリにはコメント付けられない訳だしさ。
>>990 logs とか用途なんて分かりきっているから必要ないし、何に使うかわかるような
名前にしていれば、ふつうはディレクトリごとに説明用のファイルなんていらない。
べつにディレクトリが管理できないならできないで回避策はあるからそう困るわけじゃないんだけど、
ディレクトリを管理対象にできないのが正しい、管理対象にしようとすることが間違いだ、
とでもいうような主張が散見されるので、ちょっと反論してみた。
cvsではできたよね、たしか。
CVSでは、もともとファイル1つだけを対象とするRCSのフォーマットを
流用している都合もあって、ディレクトリは管理してない。
cvsはできないよ。
必要な空ディレクトリはファイル置かないといけない
あと、消したディレクトリの残骸がレポジトリ(ただのディレクトリ)に
ずっと残るしな。
>>994 それは -P オプション付けたときだろ。
-P オプション付けなければ、チェックアウト時にしっかり出てくる。
インポートは面倒だから、リポジトリに空のディレクトリ追加してそれをチェックアウト、
そこに必要なファイルを add していくなんてのはよくやる方法。
update -dってのもあるね。
>>996 何いってんだオメエ
いらなくなった空のディレクトリもチェックアウトででてくるだろが
結局、運用上はファイル置かないといけない
>>998 あーなるへそ。
そんなに不要なディレクトリ作ったことなかったから気付かなかった。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。