[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/10 01:14 / Filesize : 211 KB / Number-of Response : 812
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

git スレッド



1 名前:login:Penguin [2007/12/16(日) 18:40:39 ID:GslAi8rs]
ソースコード管理を行うバージョン管理システム、git について語ろう。

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

git チュートリアル (バージョン 1.5.1 以降用)
www8.atwiki.jp/git_jp/pub/Documentation.ja/tutorial.html


328 名前:login:Penguin mailto:sage [2009/06/05(金) 17:33:49 ID:0gYSyA33]
>>293 わかったよ。.gitignoreとは別の除外リストがあるらしい。 $ git help repository-layout |less +/exclude

329 名前:login:Penguin mailto:sage [2009/06/08(月) 23:17:07 ID: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できますか?

330 名前:login:Penguin mailto:sage [2009/06/08(月) 23:54:18 ID:C1ERIbGC]
試してないけど clone はできてるんじゃね?

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

リモートリポジトリのブランチは git branch -r で確認できると思うよ。

331 名前:login:Penguin mailto:sage [2009/06/09(火) 00:07:59 ID:AyjP2z0q]
>>329
git clone git://github.com/yhara/sinatbbs.git magazine

じゃない?

332 名前:login:Penguin mailto:sage [2009/06/09(火) 07:51:55 ID: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

333 名前:login:Penguin mailto:sage [2009/06/10(水) 00:58:47 ID:KXr3oHi6]
>>332
いけました、ありがとうございました。

334 名前:login:Penguin mailto:sage [2009/06/18(木) 15:44:21 ID: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 に入ってしまうのが困るです

335 名前:login:Penguin [2009/06/18(木) 19:01:04 ID:2Ebk94KK]
>>334
>>74>>76あたり

336 名前:login:Penguin mailto:sage [2009/06/18(木) 20:18:53 ID:cCav561R]
>>334
cherry-pickが手軽だと思う



337 名前:login:Penguin mailto:sage [2009/06/18(木) 21:43:20 ID:Ntg4BqVh]
git-pushのデフォが--dry-runで、本当にpushする時だけ
--no-dry-runっていう動作にするにはソースをいじるしか
ないのかな。そういう需要ってあまりないんだろうか。

338 名前:login:Penguin mailto:sage [2009/06/18(木) 21:57:41 ID:eLD/FLhK]
>>337
git config --global alias.p 'push --dry-run'
としてpush使わないとか

339 名前:login:Penguin mailto:sage [2009/06/21(日) 20:28:22 ID:lOVS9wsZ]
charset という名前の github の唯一のリポジトリを削除する方法は

  git push git@github.com: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

340 名前:login:Penguin mailto:sage [2009/06/21(日) 22:41:22 ID:zEt58fLN]
間違ってるかもしれないけど、github からプロジェクト消したいなら
ウェブ上のインターフェイスからできるよ。


341 名前:login:Penguin mailto:sage [2009/06/22(月) 06:17:19 ID:dUjEbQcZ]
>>339
最近のGitHubは微妙にレスポンスが悪い
pushしたら2時間くらい放置することにしてる
たぶん、今日見たら消えてると思う

質問、トライアルごとにブランチ切るような使い方してるんだけど、
一応完成して、メインストリームブランチに入れて、
倉庫みたいな物置ブランチにコピーしておいて
という使い方をすると、「もう必要ない使用済み」のちいさなブランチができるよね
これを
「"圧縮"してどこかに退けておいて git-branch で表示されないようにしておく」
ということはできない?
git branch すると20個くらいだーっと表示されてもうわけわからん状態になってるん
ブランチを消してもいいんだけど、なんか操作ミスとかでマージしたメインブランチが消えたときとかの予備にみたいな貧乏性

342 名前:login:Penguin mailto:sage [2009/06/24(水) 21:35:59 ID:2QUgEiwr]
>>341
まったく同じだw
俺も貧乏性というかビビりなんでブランチやたら残ってる。
pushの際にfast forwardできた時はまだ良いんだけど、rebaseとかcherry-pickした時は
古いブランチを念のために残しちゃうんだよねぇ。
やり方としては、必要なくなったブランチがある今の場所を他からremoteで
fetchさせておいて、そっちでcheckout -bしておくとかかね…めんどくさいな。

343 名前:login:Penguin mailto:sage [2009/06/25(木) 21:57:36 ID:Onb9g2E7]
git-daemonについて質問です。
開発用と同じPCにgit-daemonをセットアップしようとしています。
基本的にはこちらにある通りに設定を行いました。
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についてはまだ訳されておらず、よく分かりません。
すみませんがよろしくお願いします。


344 名前:343 mailto:sage [2009/06/25(木) 22:08:30 ID: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
というコマンドで実行されているようです。

345 名前:login:Penguin mailto:sage [2009/06/25(木) 23:07:10 ID:E5OhASqI]
>>343
うーん、git-daemonの書込みパーミッションとか?
git-daemonにreceivepack設定してpushさせると匿名フルオープンになるみたいなので、
sshのほうが良いんじゃないかと思う。
てかgit-daemonでpush出来るとは知らなかった…

346 名前:343 mailto:sage [2009/06/25(木) 23:54:48 ID:Onb9g2E7]
>>345
gitを使い始めて浅いもので理解していないのですが
> sshのほうが良いんじゃないかと思う。
これはどういう意味でしょうか?man git-pushで
ssh://[user@]host.xz/path/to/repo.git/
という表記は見かけましたが、このコマンドでpushするべきだとことでしょうか?



347 名前:343 mailto:sage [2009/06/26(金) 00:48:11 ID: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というレポジトリを作ってもらうようなものです。

348 名前:login:Penguin mailto:sage [2009/06/26(金) 01:20:59 ID:uHyKMR0H]
>>346
このへん参考になるかも
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)
www8.atwiki.jp/git_jp/pub/git-manual-jp/Documentation/gittutorial.html

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

sshでpushはさせたいけどシェルは使わせたくないとか、本格的にGitを
ホスティングしたいのであれば、Gitosisが便利ですよ。

349 名前:login:Penguin mailto:sage [2009/06/26(金) 02:03:14 ID:uHyKMR0H]
>>347
>例えばですが、git create git://host.xz/path/to/repo.git/
>を発行すると、新しくrepo.gitというレポジトリを作ってもらうようなものです。
よくわからないけど、あったっけなぁ。ブランチを作るのはできるけど。。。
sshできるならそこのホストにログインしてgit initすれば出来る。
それか管理者が作っておいてあげるとか。
Gitosisはそのへんの管理が柔軟にできるようにはなってましたが。

350 名前:login:Penguin mailto:sage [2009/06/26(金) 14:12:47 ID:2GlKWaVl]
Windows に cygwin 入れて使ってます。
ls ~ して出るところに .gitignore を置いているのですが、
git status すると、ignore 指定したファイルが

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

に出てきます。どのように設定すればよいでしょうか。

351 名前:login:Penguin mailto:sage [2009/06/26(金) 17:37:09 ID:JV5Aa+Hk]
>>350
git config [--global] core.exludesfile ~/.gitignore

352 名前:login:Penguin mailto:sage [2009/06/26(金) 17:46:31 ID:2GlKWaVl]
>>351
ありがとうございます。
それでも変わらず…。

353 名前:login:Penguin mailto:sage [2009/06/26(金) 18:38:46 ID:iVeHZqbP]
>>352
core.excludesfile だよん

354 名前:login:Penguin mailto:sage [2009/06/26(金) 23:51:12 ID:p2TqTPM6]
>>348
お返事ありがとうございます。

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

いただいたURL、Gitosisについても今後の為に読ませていただきます。
ありがとうございました。

355 名前:login:Penguin [2009/06/29(月) 00:33:12 ID:cM4lxNQ+]
linuxデスクトップユーザーの特徴

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

       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |    __________
   ヽノ    /\_/\   |ノ  /
    ゝ   /ヽ───‐ヽ /  /  linuxはめんどくさくて難しい分だけ、
     /|ヽ   ヽ──'   / <  自称プロが悦に浸るためのツールとして最高なんじゃないだろうかwww
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

356 名前:login:Penguin mailto:sage [2009/06/29(月) 11:19:14 ID:ZvxokV6H]
>>353
ありがとうございます。うまくいきました!



357 名前:login:Penguin mailto:sage [2009/07/02(木) 10:56:24 ID:jjJW7RlL]
git status を git st にしようと

git config --global alias.st status

しました。

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

git status = git st にするにはどうしたらいいでしょうか。

358 名前:login:Penguin [2009/07/06(月) 14:19:12 ID:6WnxlUWF]
BがAをcloneしているとして
B→Aにpushしたとき、warningがだだっと出て、Aではgit reset --hardしないとpushした内容になりません。
resetせずとも良いやり方はありますか?
(A→Bは操作できません)

359 名前:login:Penguin mailto:sage [2009/07/06(月) 14:59:26 ID:qaJTybW2]
>358
warningの内容が分からないので適当だけど、
A側に変更がある状態でpushしてるんじゃないかな。
pushする先はbareリポジトリのほうがいいよ。

360 名前:358 [2009/07/06(月) 18:06:27 ID:6WnxlUWF]
>>359
Thanks!
bareリポジトリにpushすれば良いのですね
今まで勘違いしてたけど調べて分かりました

361 名前:login:Penguin mailto:sage [2009/07/06(月) 19:01:30 ID:tXUbQGaL]
>>357
分かる方いらっしゃいませんか

362 名前:login:Penguin mailto:sage [2009/07/09(木) 08:58:11 ID:neFt6wMr]
>>357
俺は ~/.gitconfig にこうやって書いてるけど、全然問題なし。
[alias]
st = status

363 名前:357 mailto:sage [2009/07/09(木) 09:41:44 ID:spRnDxWI]
>>362
ありがと。そうか。。。
正しい git status の結果になるディレクトリと、
長大な modified が出るディレクトリがあることが分かりました。
仕方なく git status と書かれた gitst.bat を使ってます。

364 名前:login:Penguin mailto:sage [2009/07/09(木) 14:45:00 ID:neFt6wMr]
>>363
…もしかしてWindows?
ここLinux板だし、こっちでも聴いてみたらどうだろう。
pc12.2ch.net/test/read.cgi/tech/1242918130/

365 名前:login:Penguin mailto:sage [2009/07/09(木) 14:53:30 ID:spRnDxWI]
>>364
Windows ( cygwin ) です。
そっちで聞いてみます。ありがとうございました。

366 名前:login:Penguin mailto:sage [2009/07/20(月) 12:59:20 ID:y3l+3ouD]
GitHub で公開されてる fork 元で、バカみたいに大規模なファイル構成とファイル内容の全変更がありました
いちおうこれに追随しなければならないんですが、
手元の適当なブランチに試しにpullしたら衝突解消がとってもめんどくさいことになって泣きました

手元にブランチが20個くらいあります。全部に対してこれを繰り返すのは嫌です
きっとなんか便利な方法があるんだとは思うんですが、何をすればいいものなんでしょうか?



367 名前:login:Penguin mailto:sage [2009/07/20(月) 14:29:02 ID:/rqSq1cX]
>>366
WWW::Mechanize?

368 名前:login:Penguin mailto:sage [2009/07/20(月) 19:07:11 ID:q2y5p7aG]
大量の衝突をうまくマージする方法じゃないの?
取得を自動でやる方法じゃなくて

369 名前:login:Penguin mailto:sage [2009/07/20(月) 19:18:33 ID:/rqSq1cX]
>>368
ごめんなさい、>>367は「バカみたいに大規模なファイル構成とファイル内容の全変更」があったものについての予想です。

370 名前:login:Penguin mailto:sage [2009/07/20(月) 20:05:55 ID:ma9OV7L+]
Ruby版の?

module WWW
 class Mechanize
 end
end

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

# nbsp の使い方はこれであってるのだろうか


371 名前:login:Penguin mailto:sage [2009/07/20(月) 22:36:14 ID:1OZrXuJk]
うぉーなんだそれは…

372 名前:login:Penguin mailto:sage [2009/07/21(火) 04:43:12 ID:nT3Auy6R]
論理構造的にはともかく、diffの各行的には単にインデントが浅くなっただけじゃん
module WWW と end のとこだけだろ、それ引っかかるの

373 名前:login:Penguin mailto:sage [2009/07/21(火) 12:41:57 ID:Y7zra871]
>>366
git rerere --help

374 名前:login:Penguin mailto:sage [2009/07/21(火) 13:52:37 ID:HzmMUGDt]
GitHubに試しに登録してpushまで終わったんだが、
検索にかからない、自分のIDすらかからない・・・なんだこりゃ

375 名前:login:Penguin mailto:sage [2009/07/22(水) 06:38:32 ID:dp/16pzu]
>>372
これ、lib/www/mechanize/ 以下のファイルが全部 lib/mechanize/ に移動してるんだよね
手元では lib/www/mechanize/ の中に編集されたファイルがたくさんあるだろうから、
rebase で遡って差分適用するたびに衝突起こすな

376 名前:login:Penguin mailto:sage [2009/07/24(金) 14:17:45 ID:6MAoexAT]
git commit したら自動で -v オプションを付ける方法はなんでしょうか



377 名前:login:Penguin mailto:sage [2009/07/26(日) 10:29:12 ID:r004HONT]
>>376
aliasを設定するとか。


378 名前:login:Penguin [2009/07/29(水) 21:06:50 ID:NqWOLxIQ]
1.6.4 age

379 名前:login:Penguin mailto:sage [2009/08/02(日) 06:28:58 ID:ANiJcqBB]
ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06767-9
原書はどんなできなのかな?

380 名前:login:Penguin mailto:sage [2009/08/02(日) 09:08:14 ID:1MTX0arw]
>>379
Pragprogの原書なのでブランド買いした。

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

管理オブジェクトの話とかplumbingコマンドのレイヤーについては
さほど載ってなかったはず。


381 名前:login:Penguin mailto:sage [2009/08/02(日) 19:51:08 ID:ANiJcqBB]
>>380
レビュー、ありがとう。
この訳本が出たら、立ち読みしてみて、考えよう。

382 名前:login:Penguin mailto:sage [2009/08/03(月) 14:34:54 ID:RIRtotud]
gitとsquidを連携したwebキャッシュ作りたいんだけど
gitを改造しないでsquidと連携させることできる?

383 名前:login:Penguin [2009/08/03(月) 16:11:32 ID:T85XxxMu]
git cvsimport
でCVSリポジトリを変換しようと思ったらメッセージが化けました。
今までTortoiseCVS SJIS版(あろはだよCVS版)を使っていたのでそうなったんだと思いますが、
このメッセージをUTF8に変換するにはどうしたらいいんでしょう?
どなたかお助けいただけますと幸いです。よろしくお願いします。

384 名前:login:Penguin mailto:sage [2009/08/03(月) 20:24:19 ID:6y63jn1e]
>>382
「連携」が何か他の人に伝わってる、と思うのはなぜ?

385 名前:login:Penguin mailto:sage [2009/08/06(木) 07:01:18 ID:KCKgFcNy]
>>383
おれはEUC-JPなcvsからcvsimportしたやつは、
git config i18n.commitEncoding EUC-JP してるけど。
まああたらしいログをUTF8で書くとやっぱり化けるけど。
基本自分は英字でログかくから気にしてない。

386 名前:login:Penguin mailto:sage [2009/08/06(木) 07:05:35 ID:KCKgFcNy]
とカキコしてから気になって調べたら、
git config i18n.logOutputEncoding UTF8すると
あたらしくUTF8で書いてもしっかり全部化けずにいけますた。



387 名前:login:Penguin mailto:sage [2009/08/10(月) 17:32:11 ID:2cu11IQe]
ずっと思ってたんだけど、merge って意味なくね?
一意なハッシュで管理されてるなら cherry-pick だけで十分じゃね?
ローカルなブランチが晒されるしコミットメッセージの編集もできないし merge は害悪しか思いつかないんだが

388 名前:login:Penguin mailto:sage [2009/08/10(月) 17:41:46 ID:+bQVdOii]
うん、やっぱ言葉が悪いよな

私たちが図を書かず頭のイメージだけで考えるところの「ブランチのマージ」は、
たいていの場合、適切な方向に rebase することで達成される
git を使っていて「マージ」したいと思ったなら、まずは rebase を検討すれ

389 名前:login:Penguin mailto:sage [2009/08/10(月) 17:42:14 ID:Ln/irodm]
>>387
cherry-pickしたらハッシュ変わるけどどうすんの?

390 名前:login:Penguin mailto:sage [2009/08/10(月) 17:59:06 ID:+bQVdOii]
たぶん、衝突するようなマージばかりを経験してるのだと思われ

391 名前:login:Penguin mailto:sage [2009/08/10(月) 18:11:48 ID:Ln/irodm]
公開したらrebase出来なくなって、FFできそうなやつでもmergeするしかなくなるってのは
どうにかならないもんかとたまに思うことはあるな。まあしょうがない気はするけど。

FF出来ない時にマージコミットつくらずに1つの新しいコミットにまとめてしまって、
その上で便宜上だけでも元のコミット群はこれらです、って感じに参照させることが
出来ればいいなーと妄想することがある、けどそれって結局マージと同じことなんだよね。
ただ、受け入れ側でマージコミットを嫌がる場合も多いので、そんな機能もあったら便利かも
しれないとかまた妄想。

392 名前:login:Penguin mailto:sage [2009/08/10(月) 20:56:04 ID:i4bAM8hh]
えーと、こっちのブランチでcherry-pickしてないのどれだっけ?
とかなる希ガス

393 名前:login:Penguin mailto:sage [2009/08/10(月) 21:07:20 ID:IbZ/Z+oA]
cp はブランチ作り切った最後に行う
cp を頻繁に行う人はコミットメッセージも cp 時に有機的に書き換えてるはずなので
よっぽど変なまとめ方しない限り大丈夫

ウィンドウ2枚開けて片方に git log の結果を常に表示しながら cp しないといけない状況ばかりなのには同意はしておく

394 名前:login:Penguin mailto:sage [2009/08/10(月) 23:47:00 ID:nFA1XbhB]
>>391
公開してるリポジトリに直接commitしたりとかしてんの?

395 名前:login:Penguin mailto:sage [2009/08/10(月) 23:57:49 ID:Ln/irodm]
>>394
いや、pushしてるよ。ただフォーク元も公開してるから。

396 名前:login:Penguin mailto:sage [2009/08/11(火) 00:18:25 ID:gCZov+kt]
mergeっていけないことなのか?必要悪なのか?



397 名前:login:Penguin mailto:sage [2009/08/11(火) 01:51:55 ID:9aVIR9qR]
pushしたブランチの履歴は変更してはいけないというルールがあるからな

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

「AをしてBをしてCをする差分適用であるが、今回に限ってはBのあとにXであるさらなる差分適用がある」
という情報で格納すべき
ハッシュ値は不変で
このコミットを cherry-pick したらまずは「AをしてBをしてCをする差分適用」が試されるべき

398 名前:login:Penguin mailto:sage [2009/08/11(火) 06:08:40 ID:od33ZDSx]
>>397
ハッシュ値をどうやって計算してるか知らないの?

399 名前:login:Penguin mailto:sage [2009/08/11(火) 08:06:48 ID:hQImHIEr]
ハッシュ値は全く同じアルゴリズムが使われてさえいればどう計算してもいいんだよ
ハッシュというとファイルをバイト列として利用しなければいけないとしか思いつかない人が稀にいるが

400 名前:login:Penguin mailto:sage [2009/08/11(火) 10:38:30 ID:AVaSZeyh]
resolveがある場合のgitのマージコミットって、
> 「AをしてBをしてCをする差分適用であるが、今回に限ってはBのあとにXであるさらなる差分適用がある」
におけるXになってない?

そもそもA B Cが何を指してるのかよくわからんが。

401 名前:login:Penguin [2009/08/12(水) 15:06:33 ID:8h+T8Ju7]
svn でさほど不満はないのですが、ファイル数、ファイルサイズともに
大きなプロジェクトで update, commit 速度が遅く困っています。
git に乗り換えれば速度少しでも早くなるでしょうか?また、各
ローカル側の hdd 使用量は svn より増えると考えておいてよいで
しょうか?

402 名前:login:Penguin mailto:sage [2009/08/12(水) 15:53:46 ID:mycJo5BE]
>>401
速度はたぶんものすごく早くなると思う。
ローカル側のディスク使用量はそれほど気にならないよ。

ただし操作方法、概念が異なるので、もしも仕事で大人数でやるのなら、
習得させるのにそれなりに工数がかかると思う。

403 名前:login:Penguin [2009/08/12(水) 17:45:44 ID:Z/KJAJVW]
では、ひとまず svn のリポジトリを、残し一部メンバのみ git 経由で
アクセスする感じで検証でしょうか。ただ、この使い方だと速度面の
メリットはわからないですよね。大プロジェクトなので難しいところ。

404 名前:login:Penguin mailto:sage [2009/08/12(水) 18:24:39 ID:FOPhwWTC]
>403
今一環境がかんないんだが、大プロジェクトでも
updateとcommitなんて日に一度くらいじゃね?

自分だけgit-svn使えばローカルだけで大抵の用事は済むので、
快適になると思うよ。

405 名前:login:Penguin mailto:sage [2009/08/12(水) 18:36:00 ID:Y2NYIgNJ]
一日最低 10 回は commit してるなぁ

406 名前:login:Penguin mailto:sage [2009/08/12(水) 19:12:05 ID:4qtNGkYm]
commit --amend含めると30いくかな



407 名前:login:Penguin mailto:sage [2009/08/12(水) 19:48:18 ID:pDDmfa5D]
すみません。commitの回数つながりで、ちょっとおたずねします。

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

diffの出力を手作業で加工して、追加した機能(関数)もしくは変更部分ごとにパッチを作って、
それらを取り込んで→コミット...を繰り返せば何とかなると思っているのですが、
他によい方法はないでしょうか。
# 対象は1ファイルです。


408 名前:login:Penguin mailto:sage [2009/08/12(水) 20:05:23 ID:dme4v7A0]
>>407
そんな時のための git add -p じゃないか

409 名前:login:Penguin mailto:sage [2009/08/12(水) 20:25:02 ID:mycJo5BE]
>>408
最近それ知って、gitすげーと思った。
git add -i なんかはまだ使いこなせないが、極めたら世界が変わりそうだ。

410 名前:login:Penguin [2009/08/12(水) 20:26:37 ID:3jImDu3O]
>大プロジェクトでも
>updateとcommitなんて日に一度くらいじゃね?

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

411 名前:407 mailto:sage [2009/08/13(木) 07:17:33 ID:iA5oHuEp]
>>408
うわ〜〜〜。んじゃ、これは!!
すげ〜〜。

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

addのオプションか。diffとかpatch-formatとかみてたよ orz
っていうか、それ以外のaddのオプションもすごいのな。
なんか、今までやっていたことが「バージョン管理するための管理」みたいな
ほとんどが不毛なことって気がしてきた...。
もちっと精進するよ。
またお願いします。

412 名前:login:Penguin mailto:sage [2009/08/13(木) 15:27:28 ID:tyyaneTm]
ローカル環境で git-daemon を立ち上げました。

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

ローカルなので ssh なしでやりたいのですが、
どう設定すればいいでしょうか。

413 名前:login:Penguin mailto:sage [2009/08/13(木) 15:44:37 ID:zQQwCkns]
まあ、色々方法はあるわな、httpとかxinetdとか
てっとりはやくやってみたそうだから、xinetdでやってみたら?
xinetd

414 名前:login:Penguin mailto:sage [2009/08/13(木) 15:49:26 ID:zQQwCkns]
xinetdを起動する
xinetdにgitを登録する(gitポートにリクエストがあったとき、xinedがgit-daemonを呼び出す)
あとは、gitリポジトリ(コンテンツ)の用意と、クライアントへのgitのインストールで
クライアントから、git cloneっしょ

415 名前:login:Penguin mailto:sage [2009/08/13(木) 15:57:01 ID:tyyaneTm]
>>413-414
ありがとうございます。
xinetd、挑戦してみます。

416 名前:login:Penguin mailto:sage [2009/08/13(木) 16:30:15 ID:F9EvWFzj]
>>412
>>343-354



417 名前:412 mailto:sage [2009/08/13(木) 16:48:16 ID:tyyaneTm]
>>416
躓いて見てみたらw
ありがとうございます。

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

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

再度、挑戦!

418 名前:login:Penguin mailto:sage [2009/08/13(木) 18:29:12 ID: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

うまく動いている方、アドバイスお願いします。

419 名前:login:Penguin mailto:sage [2009/08/13(木) 18:36:55 ID:cf0vEXgI]
cannot drop privileges ということなので、xinetdの設定のほうで、
git-daemonを動かす権限をsetuidを呼べる人(rootとか?)にすればい
いのかもしれない。


420 名前:login:Penguin mailto:sage [2009/08/13(木) 20:51:01 ID:Vyg2UZ2a]
ありがとうございます。
setuid...
調べてみます。

421 名前:418 mailto:sage [2009/08/14(金) 10:12:25 ID: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 スレで聞いた方がいいのかもしれませんが、
その前に、ここでお分かりになる方はいらっしゃいますでしょうか。

422 名前:login:Penguin mailto:sage [2009/08/14(金) 10:35:16 ID:Q/iZulHO]
>>421
ttp://www.aoisakura.jp/tdiary/?date=20081212
おなじエラーではまってる人がいました。
以前動かそうとしていたものが正常終了していないのでは?


423 名前:421 mailto:sage [2009/08/14(金) 10:56:54 ID:vxCEaCUs]
ありがとうございます。
プロセスを kill -9 し、xinetd を再起動しました。

$ sudo lsof | grep git
xinetd 26055 root 5u IPv4 1666608 0t0 TCP *:git (LISTEN)
$ sudo kill -9 26055
$ sudo /usr/sbin/rcxinetd restart

今度は readlink: Permission denied が出ないのでいい感じ!

$ sudo lsof | grep git
git-daemo 26095 git-daemon cwd DIR 253,3 4096 2 /
git-daemo 26095 git-daemon rtd DIR 253,3 4096 2 /
git-daemo 26095 git-daemon txt REG 253,3 196936 10356883 /usr/lib64/git/git-daemon
git-daemo 26095 git-daemon mem REG 253,3 47784 9946462 /lib64/libnss_files-2.9.so
( 省略 )
git-daemo 26095 git-daemon 2u CHR 1,3 0t0 2055 /dev/null
git-daemo 26095 git-daemon 3u IPv6 1666970 0t0 TCP *:git (LISTEN)
git-daemo 26095 git-daemon 4r FIFO 0,7 0t0 1666971 pipe
git-daemo 26095 git-daemon 5w FIFO 0,7 0t0 1666971 pipe
xinetd 26136 root 5u IPv4 1667341 0t0 TCP *:git (LISTEN)

と思ったのですが、

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

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

と変わらず…。openSUSE を再起動してみます…。

424 名前:421 mailto:sage [2009/08/14(金) 11:00:50 ID:vxCEaCUs]
余談。
zypper install git-daemon で作られる /etc/xinetd.d/git には

--base-path="/srv/git"

と書かれていて、" を消して

--base-path=/srv/git

としないといけなかった。
昨日からハマっているので、午前中の段階で精神的に疲労中w

425 名前:421 mailto:sage [2009/08/14(金) 11:14:13 ID:vxCEaCUs]
再起動しても

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

$ sudo lsof -i:9418
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 2903 root 5u IPv4 6924 0t0 TCP *:git (LISTEN)
git-daemo 3296 git-daemon 3u IPv6 9929 0t0 TCP *:git (LISTEN)

xinetd と、普通のサーバが二重に立ちあがっているのが原因でしょうか ( しかも IPv6 )。

git-daemon を kill -9 しても自動で立ち上がります。
これを止める方法を探しますが、アドバイスがあると嬉しいです。

426 名前:login:Penguin mailto:sage [2009/08/14(金) 11:23:39 ID:Q/iZulHO]
xinetdから起動されたgit-daemonが、リクエストを処理し終わっても
そのままデーモンとして残り続けていませんか?
xinetdから起動するなら、処理ごとに終了するべきですね。
git-daemonに渡せるオプションはありませんか?
--inetd だろうか。




427 名前:421 mailto:sage [2009/08/14(金) 11:43:01 ID:vxCEaCUs]
>>429
本当にありがとうございます!!
git clone できました!!!

今後の人のためにまとめると、
openSUSE 11.1 で
$ sudo zypper install git-daemon
したのを ssh 使わずに利用したいなら
/etc/xinetd.d/git を下記に変更。

■ BEFORE
server_args = daemon --syslog --detach --reuseaddr --user=git-daemon --group=nogroup --pid-file=/var/run/git-daemon.pid --base-p
ath="/srv/git"

■ AFTER
server_args = daemon --syslog --detach --reuseaddr --inetd --export-all --pid-file=/var/run/git-daemon.pid --base-path=/srv/git

変更後、xinetd の再起動を忘れずに。

$ sudo /usr/sbin/rcxinetd restart

あー、今日はもう帰ってビール飲みたい。

428 名前:427 mailto:sage [2009/08/14(金) 11:43:52 ID:vxCEaCUs]
興奮して間違えましたが、429 さんではなく、>>426 さんです。
そのほか、いろいろ助言を下さった方、ありがとうございました。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef