トップページ⇒linux
984コメント325KB

git スレッド

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin2007/12/16(日) 18:40:39ID:GslAi8rs
ソースコード管理を行うバージョン管理システム、git について語ろう。

あの、リーナス・トーバルズだって、バージョン管理を始めたんだ。
http://www.kernel.org/pub/software/scm/git/

git チュートリアル (バージョン 1.5.1 以降用)
http://www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html
0322login:Penguin2009/06/02(火) 13:54:30ID:D8d0YmW8
>>321
trash-cliなんて便利そうなの知らなかったよ、あんがと。
0323login:Penguin2009/06/02(火) 21:16:03ID:x7ntZyXz
そしてそれが入ってないシステムでいつもの癖が出て悶絶するw
0324login:Penguin2009/06/03(水) 09:06:05ID:XMOgq/dG
>>323
trashコマンドはオプションがないので、rm -rf *とかしなくてもrm *でいい。
だから、rm *と打つ癖を付けとけばtrashがない環境でも削除するかダイアログで聞かれるはず。
0325login:Penguin2009/06/04(木) 11:13:39ID:gFmd/ycH
どっちかというとそういう小細工するよりはちゃんとバックアップとっといた
ほうがいい気がする。>>323みたいなのはあるし。
0326login:Penguin2009/06/04(木) 12:39:36ID:TWd6diqQ
俺は、~/以下のファイルを/home/$USER.bk以下にぜんぶハードリンクする
スクリプト書いてバックアップにしてる。
zshつかってるのにrm * したんだよね……
0327login:Penguin2009/06/04(木) 15:06:54ID:vC6RyzlI
スレチ・ガイ登場の予感
0328login:Penguin2009/06/05(金) 17:33:49ID:0gYSyA33
>>293 わかったよ。.gitignoreとは別の除外リストがあるらしい。 $ git help repository-layout |less +/exclude
0329login:Penguin2009/06/08(月) 23:17:07ID:ZitoZgZ1
ttp://github.com/yhara/sinatbbs/tree/magazine
これをcloneしたいんですが、表示されているclone urlでcloneすると
ttp://github.com/yhara/sinatbbs/tree/master
こっちをcloneしてしまいます。
多分ブランチでmagazineが存在するんだろうと思うんですが、masterをcloneしてgit branchしてもmasterしか表示されません。
どうすればmagazineをcloneできますか?
0330login:Penguin2009/06/08(月) 23:54:18ID:C1ERIbGC
試してないけど clone はできてるんじゃね?

リモートリポジトリの magazine ブランチで遊びたいなら、
git checkout -b magazine origin/magazine とかしてみたらどう?

リモートリポジトリのブランチは git branch -r で確認できると思うよ。
0331login:Penguin2009/06/09(火) 00:07:59ID:AyjP2z0q
>>329
git clone git://github.com/yhara/sinatbbs.git magazine

じゃない?
0332login:Penguin2009/06/09(火) 07:51:55ID:xJxgLqqZ
$ URL=git://github.com/yhara/sinatbbs.git
$ git clone -n $URL
$ git checkout -b magazine origin/magazine

magazine以外取ってきたくもない、という場合はこうかな。
$ mkdir sinabbs
$ cd sinabbs
$ git init
$ git remote add -t magazine origin $URL
$ git fetch
$ git checkout -b magazine origin/magazine
0333login:Penguin2009/06/10(水) 00:58:47ID:KXr3oHi6
>>332
いけました、ありがとうございました。
0334login:Penguin2009/06/18(木) 15:44:21ID:5DrDTVn8
1-2-3 … master
 +-a-b-c-d-e … experimental

で、 experimantal のうち a と c だけ master に適用して github に push したいです
master で experimental をマージしたら a b c d e 全部 master に入ってしまうのが困るです
0335login:Penguin2009/06/18(木) 19:01:04ID:2Ebk94KK
>>334
>>74>>76あたり
0336login:Penguin2009/06/18(木) 20:18:53ID:cCav561R
>>334
cherry-pickが手軽だと思う
0337login:Penguin2009/06/18(木) 21:43:20ID:Ntg4BqVh
git-pushのデフォが--dry-runで、本当にpushする時だけ
--no-dry-runっていう動作にするにはソースをいじるしか
ないのかな。そういう需要ってあまりないんだろうか。
0338login:Penguin2009/06/18(木) 21:57:41ID:eLD/FLhK
>>337
git config --global alias.p 'push --dry-run'
としてpush使わないとか
0339login:Penguin2009/06/21(日) 20:28:22ID:lOVS9wsZ
charset という名前の github の唯一のリポジトリを削除する方法は

  git push [email protected]:USERNAME/PROJECT.git :charset

でいいよね?
charset は予約名で、作ったら絶対に消せないとかそういうのないよね

  git push 場所 master

でも master が GitHub の USERNAME の PROJECT のページに出てこないんだけどなんだろう
ttps://github.com/USERNAME/PROJECT/tree にアクセスすると
ttps://github.com/USERNAME/PROJECT/tree/charset に飛ばされるんだが
ちなみに ttps://github.com/USERNAME/PROJECT/tree/master は 404
0340login:Penguin2009/06/21(日) 22:41:22ID:zEt58fLN
間違ってるかもしれないけど、github からプロジェクト消したいなら
ウェブ上のインターフェイスからできるよ。
0341login:Penguin2009/06/22(月) 06:17:19ID:dUjEbQcZ
>>339
最近のGitHubは微妙にレスポンスが悪い
pushしたら2時間くらい放置することにしてる
たぶん、今日見たら消えてると思う

質問、トライアルごとにブランチ切るような使い方してるんだけど、
一応完成して、メインストリームブランチに入れて、
倉庫みたいな物置ブランチにコピーしておいて
という使い方をすると、「もう必要ない使用済み」のちいさなブランチができるよね
これを
「"圧縮"してどこかに退けておいて git-branch で表示されないようにしておく」
ということはできない?
git branch すると20個くらいだーっと表示されてもうわけわからん状態になってるん
ブランチを消してもいいんだけど、なんか操作ミスとかでマージしたメインブランチが消えたときとかの予備にみたいな貧乏性
0342login:Penguin2009/06/24(水) 21:35:59ID:2QUgEiwr
>>341
まったく同じだw
俺も貧乏性というかビビりなんでブランチやたら残ってる。
pushの際にfast forwardできた時はまだ良いんだけど、rebaseとかcherry-pickした時は
古いブランチを念のために残しちゃうんだよねぇ。
やり方としては、必要なくなったブランチがある今の場所を他からremoteで
fetchさせておいて、そっちでcheckout -bしておくとかかね…めんどくさいな。
0343login:Penguin2009/06/25(木) 21:57:36ID:Onb9g2E7
git-daemonについて質問です。
開発用と同じPCにgit-daemonをセットアップしようとしています。
基本的にはこちらにある通りに設定を行いました。
http://d.hatena.ne.jp/amacou/20090113/1231831940
わたしの環境はgit-1.6.0.2、opensuse11.1です。

git cloneやcommitはできたのですが、
git pushを行うと以下のエラーメッセージが表示され、結局pushが行われません。
Counting objects: 3, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 219 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
error: unpack failed: unpacker exited with error code
fatal: read error (Connection reset by peer)

>>1にあるマニュアルの日本語訳は見たのですが、
git-daemonについてはまだ訳されておらず、よく分かりません。
すみませんがよろしくお願いします。
03443432009/06/25(木) 22:08:30ID:Onb9g2E7
上のエラーメッセージはLAN内のプライベートIPを用いてgit pushとしたときで、
127.0.0.1に対してgit cloneをした後、git pushとしたときは
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 258 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
error: unpack failed: unpacker exited with error code
To git://127.0.0.1/hobby/git_test.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git://127.0.0.1/hobby/git_test.git'

ネットワークの設定がおかしいのかもしれません。ちなみにps aux | grep gitすると、
git-daemon --syslog --detach --reuseaddr --user=git-daemon --group=nogroup --pid-file=/var/run/git-daemon.pid --base-path=/srv/git --enable=receive-pack --export-all
というコマンドで実行されているようです。
0345login:Penguin2009/06/25(木) 23:07:10ID:E5OhASqI
>>343
うーん、git-daemonの書込みパーミッションとか?
git-daemonにreceivepack設定してpushさせると匿名フルオープンになるみたいなので、
sshのほうが良いんじゃないかと思う。
てかgit-daemonでpush出来るとは知らなかった…
03463432009/06/25(木) 23:54:48ID:Onb9g2E7
>>345
gitを使い始めて浅いもので理解していないのですが
> sshのほうが良いんじゃないかと思う。
これはどういう意味でしょうか?man git-pushで
ssh://[user@]host.xz/path/to/repo.git/
という表記は見かけましたが、このコマンドでpushするべきだとことでしょうか?
03473432009/06/26(金) 00:48:11ID:sI4GnV0X
書き込みパーミッションが無いことが問題だったようです。

まず、自分ユーザの権限が及ぶところにbareレポジトリ(~/repos/git_test)を作ってみたら
$ git clone ssh://127.0.0.1/~/repos/git_test
は出来ました。そこに編集後、$ git pushすることもできました。

>>344のプロセスにあるように、
git-daemonはgit-daemonユーザ権限で実行されているのですが、
git-daemonユーザが/srv/git以下に書き込み権限がないことが理由だったようです。
レポジトリ以下のファイルをgit-daemonユーザにchownしたら、
git push git://....ができるようになりました。

ところで、gitレポジトリに書き込み権限のあるユーザに
新しいレポジトリを作ってもらうようなコマンドって存在しますでしょうか?
例えばですが、git create git://host.xz/path/to/repo.git/
を発行すると、新しくrepo.gitというレポジトリを作ってもらうようなものです。
0348login:Penguin2009/06/26(金) 01:20:59ID:uHyKMR0H
>>346
このへん参考になるかも
http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/user-manual.html#pushing-changes-to-a-public-repository

Gitの操作に慣れるという意味ではgit-daemonもsshも使わずに普通に同じホストで
pushとかしても大体同じなので、それでもいいと思う。
gittutorial(7)
http://www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/gittutorial.html

LAN内少人数で中央集権の置き場として運用したいということなら、
git-daemonで匿名pushOKにしてやっても良いかもしれないですが。

sshでpushはさせたいけどシェルは使わせたくないとか、本格的にGitを
ホスティングしたいのであれば、Gitosisが便利ですよ。
0349login:Penguin2009/06/26(金) 02:03:14ID:uHyKMR0H
>>347
>例えばですが、git create git://host.xz/path/to/repo.git/
>を発行すると、新しくrepo.gitというレポジトリを作ってもらうようなものです。
よくわからないけど、あったっけなぁ。ブランチを作るのはできるけど。。。
sshできるならそこのホストにログインしてgit initすれば出来る。
それか管理者が作っておいてあげるとか。
Gitosisはそのへんの管理が柔軟にできるようにはなってましたが。
0350login:Penguin2009/06/26(金) 14:12:47ID:2GlKWaVl
Windows に cygwin 入れて使ってます。
ls ~ して出るところに .gitignore を置いているのですが、
git status すると、ignore 指定したファイルが

# Untracked files:
# (use "git add <file>..." to include in what will be committed)

に出てきます。どのように設定すればよいでしょうか。
0351login:Penguin2009/06/26(金) 17:37:09ID:JV5Aa+Hk
>>350
git config [--global] core.exludesfile ~/.gitignore
0352login:Penguin2009/06/26(金) 17:46:31ID:2GlKWaVl
>>351
ありがとうございます。
それでも変わらず…。
0353login:Penguin2009/06/26(金) 18:38:46ID:iVeHZqbP
>>352
core.excludesfile だよん
0354login:Penguin2009/06/26(金) 23:51:12ID:p2TqTPM6
>>348
お返事ありがとうございます。

> Gitの操作に慣れるという意味ではgit-daemonもsshも使わずに普通に同じホストで
> pushとかしても大体同じなので、それでもいいと思う。
git://~~~とかssh://~~~でなくともgit clone ~/path/to/repo.git/
という感じにネットワーク越しの操作じゃなくても使えるのですね。
こういうことができるなら、
わたしの使い方ならgitデーモン立ち上げなくともよさそうです。

いただいたURL、Gitosisについても今後の為に読ませていただきます。
ありがとうございました。
0355login:Penguin2009/06/29(月) 00:33:12ID:cM4lxNQ+
linuxデスクトップユーザーの特徴

�@インストールしただけで選民思想
�Aやっていることはwindowsと同じ。しかもめんどくさくなっただけ。
�Bコマンド打ち込んでプロだと勘違い
�C黙ってwindowsでも使ってろと間口を狭める
�D素人がだのなんだのとwindowユーザーを馬鹿にする
�Eカーネルいじればいいだろと無茶を要求
�Flinux開発者とのずれを認識できていない
�Gwineを使うくせにlinuxを再現しようとする動きがあるとたたく

       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |    __________
   ヽノ    /\_/\   |ノ  /
    ゝ   /ヽ───‐ヽ /  /  linuxはめんどくさくて難しい分だけ、
     /|ヽ   ヽ──'   / <  自称プロが悦に浸るためのツールとして最高なんじゃないだろうかwww
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0356login:Penguin2009/06/29(月) 11:19:14ID:ZvxokV6H
>>353
ありがとうございます。うまくいきました!
0357login:Penguin2009/07/02(木) 10:56:24ID:jjJW7RlL
git status を git st にしようと

git config --global alias.st status

しました。

git status では何も変更がないのに
git st すると膨大な modified: が出ます。
( modify してないのに )

git status = git st にするにはどうしたらいいでしょうか。
0358login:Penguin2009/07/06(月) 14:19:12ID:6WnxlUWF
BがAをcloneしているとして
B→Aにpushしたとき、warningがだだっと出て、Aではgit reset --hardしないとpushした内容になりません。
resetせずとも良いやり方はありますか?
(A→Bは操作できません)
0359login:Penguin2009/07/06(月) 14:59:26ID:qaJTybW2
>358
warningの内容が分からないので適当だけど、
A側に変更がある状態でpushしてるんじゃないかな。
pushする先はbareリポジトリのほうがいいよ。
03603582009/07/06(月) 18:06:27ID:6WnxlUWF
>>359
Thanks!
bareリポジトリにpushすれば良いのですね
今まで勘違いしてたけど調べて分かりました
0361login:Penguin2009/07/06(月) 19:01:30ID:tXUbQGaL
>>357
分かる方いらっしゃいませんか
0362login:Penguin2009/07/09(木) 08:58:11ID:neFt6wMr
>>357
俺は ~/.gitconfig にこうやって書いてるけど、全然問題なし。
[alias]
st = status
03633572009/07/09(木) 09:41:44ID:spRnDxWI
>>362
ありがと。そうか。。。
正しい git status の結果になるディレクトリと、
長大な modified が出るディレクトリがあることが分かりました。
仕方なく git status と書かれた gitst.bat を使ってます。
0364login:Penguin2009/07/09(木) 14:45:00ID:neFt6wMr
>>363
…もしかしてWindows?
ここLinux板だし、こっちでも聴いてみたらどうだろう。
http://pc12.2ch.net/test/read.cgi/tech/1242918130/
0365login:Penguin2009/07/09(木) 14:53:30ID:spRnDxWI
>>364
Windows ( cygwin ) です。
そっちで聞いてみます。ありがとうございました。
0366login:Penguin2009/07/20(月) 12:59:20ID:y3l+3ouD
GitHub で公開されてる fork 元で、バカみたいに大規模なファイル構成とファイル内容の全変更がありました
いちおうこれに追随しなければならないんですが、
手元の適当なブランチに試しにpullしたら衝突解消がとってもめんどくさいことになって泣きました

手元にブランチが20個くらいあります。全部に対してこれを繰り返すのは嫌です
きっとなんか便利な方法があるんだとは思うんですが、何をすればいいものなんでしょうか?
0367login:Penguin2009/07/20(月) 14:29:02ID:/rqSq1cX
>>366
WWW::Mechanize?
0368login:Penguin2009/07/20(月) 19:07:11ID:q2y5p7aG
大量の衝突をうまくマージする方法じゃないの?
取得を自動でやる方法じゃなくて
0369login:Penguin2009/07/20(月) 19:18:33ID:/rqSq1cX
>>368
ごめんなさい、>>367は「バカみたいに大規模なファイル構成とファイル内容の全変更」があったものについての予想です。
0370login:Penguin2009/07/20(月) 20:05:55ID:ma9OV7L+
Ruby版の?

module WWW
 class Mechanize
 end
end
を
class Mechanize
end
# と外出しして
module WWW
 Mechanize = ::Mechanize
end
で後方互換性を保つとゆー大顰蹙。

# nbsp の使い方はこれであってるのだろうか
0371login:Penguin2009/07/20(月) 22:36:14ID:1OZrXuJk
うぉーなんだそれは…
0372login:Penguin2009/07/21(火) 04:43:12ID:nT3Auy6R
論理構造的にはともかく、diffの各行的には単にインデントが浅くなっただけじゃん
module WWW と end のとこだけだろ、それ引っかかるの
0373login:Penguin2009/07/21(火) 12:41:57ID:Y7zra871
>>366
git rerere --help
0374login:Penguin2009/07/21(火) 13:52:37ID:HzmMUGDt
GitHubに試しに登録してpushまで終わったんだが、
検索にかからない、自分のIDすらかからない・・・なんだこりゃ
0375login:Penguin2009/07/22(水) 06:38:32ID:dp/16pzu
>>372
これ、lib/www/mechanize/ 以下のファイルが全部 lib/mechanize/ に移動してるんだよね
手元では lib/www/mechanize/ の中に編集されたファイルがたくさんあるだろうから、
rebase で遡って差分適用するたびに衝突起こすな
0376login:Penguin2009/07/24(金) 14:17:45ID:6MAoexAT
git commit したら自動で -v オプションを付ける方法はなんでしょうか
0377login:Penguin2009/07/26(日) 10:29:12ID:r004HONT
>>376
aliasを設定するとか。
0378login:Penguin2009/07/29(水) 21:06:50ID:NqWOLxIQ
1.6.4 age
0379login:Penguin2009/08/02(日) 06:28:58ID:ANiJcqBB
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06767-9
原書はどんなできなのかな?
0380login:Penguin2009/08/02(日) 09:08:14ID:1MTX0arw
>>379
Pragprogの原書なのでブランド買いした。

CVS/Subversion/Mercurialを使った経験ありの俺的にはそれなりに
使えるようになった。

管理オブジェクトの話とかplumbingコマンドのレイヤーについては
さほど載ってなかったはず。
0381login:Penguin2009/08/02(日) 19:51:08ID:ANiJcqBB
>>380
レビュー、ありがとう。
この訳本が出たら、立ち読みしてみて、考えよう。
0382login:Penguin2009/08/03(月) 14:34:54ID:RIRtotud
gitとsquidを連携したwebキャッシュ作りたいんだけど
gitを改造しないでsquidと連携させることできる?
0383login:Penguin2009/08/03(月) 16:11:32ID:T85XxxMu
git cvsimport
でCVSリポジトリを変換しようと思ったらメッセージが化けました。
今までTortoiseCVS SJIS版(あろはだよCVS版)を使っていたのでそうなったんだと思いますが、
このメッセージをUTF8に変換するにはどうしたらいいんでしょう?
どなたかお助けいただけますと幸いです。よろしくお願いします。
0384login:Penguin2009/08/03(月) 20:24:19ID:6y63jn1e
>>382
「連携」が何か他の人に伝わってる、と思うのはなぜ?
0385login:Penguin2009/08/06(木) 07:01:18ID:KCKgFcNy
>>383
おれはEUC-JPなcvsからcvsimportしたやつは、
git config i18n.commitEncoding EUC-JP してるけど。
まああたらしいログをUTF8で書くとやっぱり化けるけど。
基本自分は英字でログかくから気にしてない。
0386login:Penguin2009/08/06(木) 07:05:35ID:KCKgFcNy
とカキコしてから気になって調べたら、
git config i18n.logOutputEncoding UTF8すると
あたらしくUTF8で書いてもしっかり全部化けずにいけますた。
0387login:Penguin2009/08/10(月) 17:32:11ID:2cu11IQe
ずっと思ってたんだけど、merge って意味なくね?
一意なハッシュで管理されてるなら cherry-pick だけで十分じゃね?
ローカルなブランチが晒されるしコミットメッセージの編集もできないし merge は害悪しか思いつかないんだが
0388login:Penguin2009/08/10(月) 17:41:46ID:+bQVdOii
うん、やっぱ言葉が悪いよな

私たちが図を書かず頭のイメージだけで考えるところの「ブランチのマージ」は、
たいていの場合、適切な方向に rebase することで達成される
git を使っていて「マージ」したいと思ったなら、まずは rebase を検討すれ
0389login:Penguin2009/08/10(月) 17:42:14ID:Ln/irodm
>>387
cherry-pickしたらハッシュ変わるけどどうすんの?
0390login:Penguin2009/08/10(月) 17:59:06ID:+bQVdOii
たぶん、衝突するようなマージばかりを経験してるのだと思われ
0391login:Penguin2009/08/10(月) 18:11:48ID:Ln/irodm
公開したらrebase出来なくなって、FFできそうなやつでもmergeするしかなくなるってのは
どうにかならないもんかとたまに思うことはあるな。まあしょうがない気はするけど。

FF出来ない時にマージコミットつくらずに1つの新しいコミットにまとめてしまって、
その上で便宜上だけでも元のコミット群はこれらです、って感じに参照させることが
出来ればいいなーと妄想することがある、けどそれって結局マージと同じことなんだよね。
ただ、受け入れ側でマージコミットを嫌がる場合も多いので、そんな機能もあったら便利かも
しれないとかまた妄想。
0392login:Penguin2009/08/10(月) 20:56:04ID:i4bAM8hh
えーと、こっちのブランチでcherry-pickしてないのどれだっけ?
とかなる希ガス
0393login:Penguin2009/08/10(月) 21:07:20ID:IbZ/Z+oA
cp はブランチ作り切った最後に行う
cp を頻繁に行う人はコミットメッセージも cp 時に有機的に書き換えてるはずなので
よっぽど変なまとめ方しない限り大丈夫

ウィンドウ2枚開けて片方に git log の結果を常に表示しながら cp しないといけない状況ばかりなのには同意はしておく
0394login:Penguin2009/08/10(月) 23:47:00ID:nFA1XbhB
>>391
公開してるリポジトリに直接commitしたりとかしてんの?
0395login:Penguin2009/08/10(月) 23:57:49ID:Ln/irodm
>>394
いや、pushしてるよ。ただフォーク元も公開してるから。
0396login:Penguin2009/08/11(火) 00:18:25ID:gCZov+kt
mergeっていけないことなのか?必要悪なのか?
0397login:Penguin2009/08/11(火) 01:51:55ID:9aVIR9qR
pushしたブランチの履歴は変更してはいけないというルールがあるからな

>>396
衝突しない理想的な世界であれば好ましい
衝突が起こったとたん別のコミットになるからシステムデザイン上は駄目
「AをしてBをしてCをする差分適用」であるコミットが衝突後
「AをしてBをしてXをしてCをする差分適用」というコミットに摩り替わっちゃやっぱ駄目だろ

「AをしてBをしてCをする差分適用であるが、今回に限ってはBのあとにXであるさらなる差分適用がある」
という情報で格納すべき
ハッシュ値は不変で
このコミットを cherry-pick したらまずは「AをしてBをしてCをする差分適用」が試されるべき
0398login:Penguin2009/08/11(火) 06:08:40ID:od33ZDSx
>>397
ハッシュ値をどうやって計算してるか知らないの?
0399login:Penguin2009/08/11(火) 08:06:48ID:hQImHIEr
ハッシュ値は全く同じアルゴリズムが使われてさえいればどう計算してもいいんだよ
ハッシュというとファイルをバイト列として利用しなければいけないとしか思いつかない人が稀にいるが
0400login:Penguin2009/08/11(火) 10:38:30ID:AVaSZeyh
resolveがある場合のgitのマージコミットって、
> 「AをしてBをしてCをする差分適用であるが、今回に限ってはBのあとにXであるさらなる差分適用がある」
におけるXになってない?

そもそもA B Cが何を指してるのかよくわからんが。
0401login:Penguin2009/08/12(水) 15:06:33ID:8h+T8Ju7
svn でさほど不満はないのですが、ファイル数、ファイルサイズともに
大きなプロジェクトで update, commit 速度が遅く困っています。
git に乗り換えれば速度少しでも早くなるでしょうか?また、各
ローカル側の hdd 使用量は svn より増えると考えておいてよいで
しょうか?
0402login:Penguin2009/08/12(水) 15:53:46ID:mycJo5BE
>>401
速度はたぶんものすごく早くなると思う。
ローカル側のディスク使用量はそれほど気にならないよ。

ただし操作方法、概念が異なるので、もしも仕事で大人数でやるのなら、
習得させるのにそれなりに工数がかかると思う。
0403login:Penguin2009/08/12(水) 17:45:44ID:Z/KJAJVW
では、ひとまず svn のリポジトリを、残し一部メンバのみ git 経由で
アクセスする感じで検証でしょうか。ただ、この使い方だと速度面の
メリットはわからないですよね。大プロジェクトなので難しいところ。
0404login:Penguin2009/08/12(水) 18:24:39ID:FOPhwWTC
>403
今一環境がかんないんだが、大プロジェクトでも
updateとcommitなんて日に一度くらいじゃね?

自分だけgit-svn使えばローカルだけで大抵の用事は済むので、
快適になると思うよ。
0405login:Penguin2009/08/12(水) 18:36:00ID:Y2NYIgNJ
一日最低 10 回は commit してるなぁ
0406login:Penguin2009/08/12(水) 19:12:05ID:4qtNGkYm
commit --amend含めると30いくかな
0407login:Penguin2009/08/12(水) 19:48:18ID:pDDmfa5D
すみません。commitの回数つながりで、ちょっとおたずねします。

一般的にcommitって細かく(最低でも1つの機能の追加ごとに)やるものだと思うのですが、
調子に乗ってコーディングしていくうちに、手元で大量に変更してしまいました。
こういうときって、どうされていますでしょうか。

diffの出力を手作業で加工して、追加した機能(関数)もしくは変更部分ごとにパッチを作って、
それらを取り込んで→コミット...を繰り返せば何とかなると思っているのですが、
他によい方法はないでしょうか。
# 対象は1ファイルです。
0408login:Penguin2009/08/12(水) 20:05:23ID:dme4v7A0
>>407
そんな時のための git add -p じゃないか
0409login:Penguin2009/08/12(水) 20:25:02ID:mycJo5BE
>>408
最近それ知って、gitすげーと思った。
git add -i なんかはまだ使いこなせないが、極めたら世界が変わりそうだ。
0410login:Penguin2009/08/12(水) 20:26:37ID:3jImDu3O
>大プロジェクトでも
>updateとcommitなんて日に一度くらいじゃね?

日にもよりますが1日10回ぐらいですかね。プログラマは20人以上
いますので全員合わせるととんでもない量の svn commit メールが来て
大変です。データサイズも200GBくらいはあるんじゃないかな。
TortoiseSVN で commit をルートディレクトリから行うと5分待ちな
状態で億劫なのでサブディレクトリからこまめにあげて上げわすれとか
出るほどのひどい状態です。
04114072009/08/13(木) 07:17:33ID:iA5oHuEp
>>408
うわ〜〜〜。んじゃ、これは!!
すげ〜〜。

教えていただきありがとうございます。
今までの苦労は何だったんだって感じ...。
ほんと、gitすげーよ。

addのオプションか。diffとかpatch-formatとかみてたよ orz
っていうか、それ以外のaddのオプションもすごいのな。
なんか、今までやっていたことが「バージョン管理するための管理」みたいな
ほとんどが不毛なことって気がしてきた...。
もちっと精進するよ。
またお願いします。
0412login:Penguin2009/08/13(木) 15:27:28ID:tyyaneTm
ローカル環境で git-daemon を立ち上げました。

サーバが openSUSE で、
クライアントが Windows Vista。

ローカルなので ssh なしでやりたいのですが、
どう設定すればいいでしょうか。
0413login:Penguin2009/08/13(木) 15:44:37ID:zQQwCkns
まあ、色々方法はあるわな、httpとかxinetdとか
てっとりはやくやってみたそうだから、xinetdでやってみたら?
xinetd
0414login:Penguin2009/08/13(木) 15:49:26ID:zQQwCkns
xinetdを起動する
xinetdにgitを登録する(gitポートにリクエストがあったとき、xinedがgit-daemonを呼び出す)
あとは、gitリポジトリ(コンテンツ)の用意と、クライアントへのgitのインストールで
クライアントから、git cloneっしょ
0415login:Penguin2009/08/13(木) 15:57:01ID:tyyaneTm
>>413-414
ありがとうございます。
xinetd、挑戦してみます。
0416login:Penguin2009/08/13(木) 16:30:15ID:F9EvWFzj
>>412
>>343-354
04174122009/08/13(木) 16:48:16ID:tyyaneTm
>>416
躓いて見てみたらw
ありがとうございます。

私も openSUSE をサーバに、
複数人で開発したい用途。

そして、どうやって新規リポジトリを作ろうかと思っていたので、本当に既視感。

再度、挑戦!
0418login:Penguin2009/08/13(木) 18:29:12ID:tyyaneTm
openSUSE で git-daemon を xinetd で起動しようと思っています。
( ssh を使うのが面倒なので… )

sudo zypper install git-daemon
sudo /usr/sbin/rcxinetd restart

して、ローカルの Vista から git clone するとエラーになります。

$ git clone git://example/test/test.git
fatal: read error (Software caused connection abort)

サーバの /var/log/message を見ると

git-daemon: [23646] cannot open pid file /var/run/git-daemon.pid: Permission denied

が出ています。とりあえず chown & chgrp & chmod して

ls -l /var/log/git-daemon.pid
-rw-r--r-- 1 git-daemon nogroup 6 2009-08-13 18:24 git-daemon.pid

とし、再度 git clone すると、やはりエラーになり、/var/log/message には下記エラーが出ます…。

git-daemon: [23765] cannot drop privileges

うまく動いている方、アドバイスお願いします。
0419login:Penguin2009/08/13(木) 18:36:55ID:cf0vEXgI
cannot drop privileges ということなので、xinetdの設定のほうで、
git-daemonを動かす権限をsetuidを呼べる人(rootとか?)にすればい
いのかもしれない。
0420login:Penguin2009/08/13(木) 20:51:01ID:Vyg2UZ2a
ありがとうございます。
setuid...
調べてみます。
04214182009/08/14(金) 10:12:25ID:vxCEaCUs
アドバイスを元に /etc/xinetd.d/git の user/group などを root にしてみたところ、
/var/log/message のエラー内容が変わりました。

$ tail /var/log/message
git-daemon: [25819] unable to allocate any listen sockets on host (null) port 9418

$ lsof | grep git
git-daemo 25772 root cwd unknown /proc/25772/cwd (readlink: Permission denied)
git-daemo 25772 root rtd unknown /proc/25772/root (readlink: Permission denied)
git-daemo 25772 root txt unknown /proc/25772/exe (readlink: Permission denied)
git-daemo 25772 root NOFD /proc/25772/fd (opendir: Permission denied)

ハマってきたので zypper remove git-daemon して、
ゼロからやり直してみたところ、やはり同じ症状に…。

openSUSE スレで聞いた方がいいのかもしれませんが、
その前に、ここでお分かりになる方はいらっしゃいますでしょうか。
■ このスレッドは過去ログ倉庫に格納されています