いてつくブログ

2ちゃんねるのスレッドをコピペしてまとめてみるブログ

リポジトリ

PC等Git 4

1 :デフォルトの名無しさん:2012/02/15(水) 00:45:09.81
ソースコード管理を行う分散型バージョン管理システム、Gitについて語ろう。
Git - Fast Version Control System
http://git-scm.com/

◆前スレ
Git 3
http://toro.2ch.net/test/read.cgi/tech/1310403238/

◆関連(ピヨピヨ)
Pro Git - Table of Contents
http://progit.org/book/ja/
Git入門
http://www8.atwiki.jp/git_jp/

116 :デフォルトの名無しさん:2012/03/16(金) 17:29:54.40
間違えてコミットするべきでないときにコミットをしてしまいました
git add .
git commit -m "20130316"
これを取り消したいと思い
git reset HEAD^
ってやってMore?って聞かれたのでyを押してENTERキーを押しました
その後git logでログをみたんですが消えてないことを確認して、コマンドのミスに気づきました
改めてコマンドをgit reset --hard HEAD^と打ってみたのですがgit logでログをみても消えません
一番最新のコミットを消したいんですがどうやって消したらいいのでしょうか?

144 :デフォルトの名無しさん:2012/03/22(木) 05:50:23.87
テキストファイルの文字コードが
utf16とかだとバイナリファイルと認識されるみたいで,
git diffとか使っても
binary files a/hoge.txt b/hoge.txt differ
としか表示されないのですが変えられるのでしょうか?

147 :デフォルトの名無しさん:2012/03/22(木) 07:04:12.08
>>144
変えるだけなら、.gitattribute に *.txt diff だけでいける。
これ、結構古い情報だから、いまは違うアプローチがあるかもしらんが …
http://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file-as-text

158 :デフォルトの名無しさん:2012/03/23(金) 00:38:43.70
なしだと起動するだけで入力がありません...

176 :デフォルトの名無しさん:2012/03/27(火) 16:27:28.43
質問ですorz:
現在WinCVSを使ってまして、今度gitしたいのです。
SVNだと、RapidSVNとかありますが、
gitのFreewareクライアントGUIは何がありますでしょうか?

SmartGitは商用ではフリーじゃないそうですし、Tortoiseはどうもキモくて。。。

208 :デフォルトの名無しさん:2012/03/28(水) 18:08:18.94
Windowsのファイル共有で公開したリポジトリをマスターにしたいのですが、
プッシュでエラー出ました。
ちょっと強引杉ますか?

>Pushing to //Server-temp/GitMaster
>remote: error: refusing to update checked out branch: refs/heads/master[K


256 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/03(火) 09:12:31.98
Git Extensionて、選択多いですね。
MsysGit/KDiff3の選択は、MsysGitで良いとして、
OpenSSHのGit defaultじゃなくてPuTTYが選択されてるけど、無問題なのかなぁ。

Gitって、サーバーとクライアントがSSHでつながってんだね。SSHって使ったことないけど。
TTYってWindowsで動作するんだろうか。

310 :デフォルトの名無しさん:2012/04/14(土) 12:28:04.97
indexを変更せずに、あるコミットからあるファイルをworking treeに取り出すにはどうしたらよいですか?
checkoutもresetもpath指定できますがindexを変更してしまうようです

311 :デフォルトの名無しさん:2012/04/14(土) 14:03:02.99
>>310
取り出した後に何かするんじゃないの?
見るだけなら
git show branch:filepath
取り出したいのならリダイレクトすればいい
git show branch:filepath > filepath~

312 :デフォルトの名無しさん:2012/04/14(土) 15:04:28.63
特定コミット時点でのファイルの状態を
index=HEADの状態のままworking treeに持って来たいとき、
git commit コミットID ファイル名; git reset ファイル名
とかやってたが、>>311のやりかたで上書きすればいいのか。
git show はいろいろ便利だなあ。

315 :デフォルトの名無しさん:2012/04/14(土) 16:57:42.20
公開してるブランチの特定のファイルを少し前の状態に戻したいときは、
git show commit-id:filepath > filepath; git commit -a もしくは、
git checkout commit-id filepath; git commitすればいいよね?
(上記2つは同じ状態になるよね?)

別のブランチをつくってそこでrebaseで戻してそれをmergeするとかを
つねにやったほうがいいのかねえ。

316 :デフォルトの名無しさん:2012/04/14(土) 17:47:41.16
>>315
公開してるならマズい。誰かが今そのブランチを元に作業してるかもしれない。
上書きしてしまうとマージする時に混乱するから素直にrevert使って、
git revert commit-id

直そうとしてるコミットが行儀悪くて他の変更も一緒くたにしてしまってる場合はかなりややこしい。試して無いけどこんなかんじ:

git checkout -b fix
git revert commit-id
git reset HEAD^
git add -p
git commit -m 'commit-idから一部だけrevert'
git checkout -f
git checkout master
git merge fix
git branch -d fix

問題の無いコミットから今のコミットまでに別の変更が紛れてても分かるようにするのがいいと思う。

337 :デフォルトの名無しさん:2012/04/19(木) 21:28:34.17
今日はじめてgitを触ったんだけど、皆もBashにカタカタ打ち込んでバージョン管理してるの?
CUIに慣れれば簡単にバージョン管理できるようになるんだよな?な?

385 :デフォルトの名無しさん:2012/04/30(月) 09:23:49.66
今日になっていきなり、以下の様なメッセージが出てきました

Your branch is ahead of 'origin/master' by 13 commits.

これは何を表しているのでしょうか?また、どうすれば良いのでしょうか?

388 :デフォルトの名無しさん:2012/04/30(月) 09:53:58.85
ローカルとリモートのブランチの対応付けとかがデフォルトのままなら

リモートのmasterブランチの修正が、リモート追跡ブランチorigin/masterに取り込まれてる。
でも、それがmasterブランチに取り込まれていない。

git fetchやったか、別のブランチをcheckoutしてる状態でgit pull originやったとかの、
結果だと思われる。

masterブランチをcheckoutした場合にそのメッセージが出てるんだと思うんで、
修正をmasterに取り込む必要があるなら、そのままgit pull originとかやればいいと思う。
masterブランチ放置ならそのままでも。

390 :385:2012/04/30(月) 09:59:52.39
>>388
git pull origin しても、"Already up-to-date."と表示されます。
ブランチも master しかありません。

391 :デフォルトの名無しさん:2012/04/30(月) 10:13:13.97
実際どうなのよ?そのoriginのmasterは、自分のmasterに取り込まれてるの?

392 :デフォルトの名無しさん:2012/04/30(月) 10:25:14.71
>>390
何も考えずにgit pull originしちゃったみたいだけど、originの修正を取り込んで良いの?
どっかからcloneしてきたmasterブランチを自ら修正してるんだよね?

393 :デフォルトの名無しさん:2012/04/30(月) 10:37:57.96
>>391
すみません、git使いはじめてまだ1月くらいしか経ってない未熟者なので、質問の意味が理解できません。
申し訳ございません。

>>392
clone元も自分のローカルディスクにあります。


404 :デフォルトの名無しさん:2012/05/04(金) 18:20:18.60
git addした以降のワーキングツリーの変更だけを取り消すにはどうすればいいんでしょう?
http://d.hatena.ne.jp/murank/20110327/1301224770
に記載されている図で、ワーキングツリーが指している場所を
インデックスが指している場所に戻すイメージなんですが…

今は一旦commitした後reset --hard, reset --soft HEAD^ ってやってるんですが
もう少しシンプルに(commitせずに)できる気がして…

411 :デフォルトの名無しさん:2012/05/10(木) 10:55:07.59
どうせ誰も使ってないTortoiseGit1.7.9.0で日本語ファイル名対応でっていう

412 :デフォルトの名無しさん:2012/05/10(木) 12:10:16.36
>>411
後はTortoiseGit 1.7.9.0の日本語化パッチが出たら
ライトユーザーに気軽に勧められるようになりますね。

TortoiseGit Japan
http://tortoisegitjapan.com/

424 :デフォルトの名無しさん:2012/05/13(日) 22:03:35.29
gui触ったことないけどどうなのよ
ワークツリーを適当に修正しまくった後に
必要なとこだけ何段階かに分けてインデックスに入れてコミットとか
こまめにコミットを繰り返したあと
リベースで必要なコミットだけを整理していくつかのコミットにまとめなおすとか
簡単にできんの?

445 :デフォルトの名無しさん:2012/05/17(木) 08:42:46.89
サーバにある複数の Git リポジトリのバックアップを rsync などのミラーリングツールで取ろうと思うのですが、誰かが push している最中に rsync が走った場合、コピーされたリポジトリが壊れていたりすることはあるのでしょうか?
一つ一つ clone した方が確実だとは思うのですが、私の知らない間にリポジトリが増えていたりもするので、できれば rsync などでリポジトリの親ディレクトリごとバックアップしてしまいたいのです。

454 :デフォルトの名無しさん:2012/05/18(金) 15:36:45.80
TottoiseGitでバイナリファイルのコンフリクトを
解決しようとしてるんだが、
とりあえずA.binってファイルについて

A.bin.BASE.bin
A.bin.LOCAL.bin
A.bin.REMOTE.bin

って3つのファイルが追加された。
BASEだのLOCALだのと言葉が端的すぎてわからんし、うっかり書き換えも怖い。
どれがなんのファイルかって教えてくれ。

547 :デフォルトの名無しさん:2012/05/28(月) 13:59:03.83
質問です。

コミットログにおいて
中括弧 [ ] で囲まれた単語はなにか特別な意味でも持っているのでしょうか?

そのような単語を含むログを持つコミットから
format-patch → am で取り込むと
中括弧 [ ] で囲まれた単語が括弧ごと消えてしまうみたいなんですが、、、


565 :デフォルトの名無しさん:2012/06/05(火) 17:55:22.03
Gitでmergeするときに、あるcommitだけを除いてマージとかできないでしょうか。

たとえばリリースブランチを開発ブランチにマージする時に、リリースブランチ特有のコミットというのがあって(リリース番号を増やすとか)、
それは開発ブランチに含めたくないというケースです。
まあこれは全部をマージした後にrevertするという手がありますが。

あるいはリリースブランチと比べて開発ブランチが大幅に変更されている場合、
リリースブランチにcommitした複数のバグフィックスのうち、開発用ブランチにも適用したほうがいいものとそうでないものがあって、
適用しなくていいものは除いたうえで、リリースブランチの内容を開発用ブランチにマージしたいというケースがあります。
このようなケースでは cherry-pick を使った方がよさそうですが、cherry-pick だとどのcommitまでを開発ブランチに適用したかがわからないので、
できればマージを使いたいと思っています。

よろしくお願いします。

571 :デフォルトの名無しさん:2012/06/09(土) 18:02:17.20
format-patchで作ったパッチに
定形文を挿入する方法ってないかな~。

それぞれ独立したsvnのリポジトリがふたつあって、
git svnで使ってるんですが
その両方に自分の担当しているモジュールが存在しています。
片方では普通に開発、
もう片方にはformat-patchをあてるだけ、、、
でやってます。
面倒なのは、パッチをあてたあとに
「どこそこリポジトリのリビジョン◯番から持ってきたコードです」
とコミットログを追加しなきゃならんことなんですが、
なんかうまい方法はないでしょうか?
パッチのコメント部分を自分で置換するしかないでしょうか?


601 :デフォルトの名無しさん:2012/06/24(日) 20:05:13.12
msysgitを使ってますが、ホイールでスクロールさせるにはどうすればいいでしょうか?
別にインストールしたcygwin(TERM=xterm)ではホイールスクロールできているんで、
Git\etcのどっかの設定ファイルをいじってターミナルを差し替えればできるんじゃないかと
思っているんですが。

623 :デフォルトの名無しさん:2012/07/07(土) 12:06:30.01
git svn dcommitで .. resource out of date; try updating .. なんちゃらという警告が出た場合、
ここで言うupdateってのは git svn rebase をやり直せってことでいいですよね?

ところが git svn rebaseしようとしても、First, rewinding head to replay .. ということで
やたら古いコミットを巻き戻そうとしてコンフリクトしてしまいます。
履歴はこんな感じで、そのコンフリクトするファイルにmasterとgit-svnの差異はありません。

* (HEAD,master)
* merge
|\
| * (git-svn)

svnリポジトリの方でそのファイルが更新されたわけでもないようですが、こっちの
gitリポジトリがなにかおかしくなっているんでしょうか?

635 :デフォルトの名無しさん:2012/07/12(木) 00:06:39.44
githubにプルリクエストしたらリベースしてまとめろって怒られてしまいました。
やったことは:
フォークしてローカルにコピー。
日本語訳用のブランチを切って作業。
日本訳部分を修正してコミット。
放置してたらフォーク元のリポジトリが更新されたのでgit fetch upstream;git merge upstream/masterで更新。
(これは日本語訳用のブランチでやってしまったかも)
日本訳部分をまた修正してコミット。
フォークした先にプッシュ。
プルリクエスト。

githubのプルリクエストには
hage 日本語訳のコミット1 96d8373
hage Merge remote-tracking branch 'upstream/master' into 日本語訳用のブランチ a253255
hage Merge remote-tracking branch 'upstream/master' into 日本語訳用のブランチ 45325c1
hage 日本語訳のコミット2 673bb56
みたいに表示されてます。

それで↓を参考にgit rebase origin masterまでしました。
http://qiita.com/items/cddd7dd9cde6a9c6dde6

git rebase -i でエディタに出るコミットとgit logで表示されるコミットで混乱してます。
"日本語訳のコミット1"96d8373と"日本語訳のコミット2"673bb56の間に
"Merge remote-tracking branch 'upstream/master' into 日本語訳用のブランチ"a253255や45325c1は存在しません。

どうしたら1つにまとめられるの?

636 :デフォルトの名無しさん:2012/07/12(木) 01:11:01.69
>>635
そのままrebaseすればいいんじゃないの
a253255 とか 45325c1 とかが適用済みの master に rebase するんでしょ
最悪 git diff で取り出したパッチをあてるとかでもいけると思う

> 放置してたらフォーク元のリポジトリが更新されたのでgit fetch upstream;git merge upstream/masterで更新。
pull request しようとしているブランチでこれはやっちゃだめだと思うよ

637 :デフォルトの名無しさん:2012/07/12(木) 01:30:58.16
>>635
rebase -i した時に次のようになるんだよね

pick 96d8373 日本語訳のコミット1
pick 673bb56 日本語訳のコミット2

一緒にしたいなら squash (s)に書き換えて

pick 96d8373 日本語訳のコミット1
s 673bb56 日本語訳のコミット2

エディタを閉じるとさらに新しいコミットログ入れろと来て、
エディタを閉じるとコミット1にコミット2が足されて
一つのコミットになると思うよ。


638 :635 :2012/07/13(金) 01:05:01.77
>>636
>a253255 とか 45325c1 とかが適用済みの master に rebase するんでしょ
そうです。
そのまましようとしたけど、rebase -iで96d8373と673bb56の間にはa253255と45325c1が無いのでどうしていいのか分からず質問しました。

>pull request しようとしているブランチでこれはやっちゃだめだと思うよ
寝ぼけたせいか、やっちゃったようです。

>>637
pick 96d8373 日本語訳のコミット1
pick 5366d33 他人1のコミット
pick 553accc 他人2のコミット
pick 3673ddc 他人3のコミット
pick 673bb56 日本語訳のコミット2

みたいになってます。この他人1,2,3のコミットはa253255と45325c1ではありません。
s 673bb56 日本語訳のコミット2 にしたら僕の日本語訳のコミット2は他人3のコミットに含まれちゃって困ったことにはならないのでしょうか?

648 :デフォルトの名無しさん:2012/07/21(土) 22:21:03.48
git svnでcloneしたものの中に、編集中(ステータスがM)のものがある時に、rebaseやdcommitする方法は無いでしょうか?

652 :648:2012/07/22(日) 00:13:18.55
stashだと、編集内容が退避されてしまうことです。
常に編集状態にしておきたいのです。でも、dcommitやrebaseはしたいのです。
dcommit前にstash、dcommit後にstash popとするような形になるのでちょっと面倒です。

670 :デフォルトの名無しさん:2012/07/23(月) 07:02:10.39
会社の仕事でも
git使うことになったんだけど、
コミットログを英語限定にされてしんどいよ~

いまどきは英語ができて当たり前なのかもしれないけど、
俺の場合、コミットログの英文考えるのに時間が取られるorz
日本人しかいないのに何故英語?って聞いたら
文字化けするから、だって、、、

svnならどうかしらないけど、
gitには文字エンコーディング関係の設定もちゃんとあるのに文字化け問題なんて存在しないよね???



696 :デフォルトの名無しさん:2012/07/30(月) 10:25:50.59
あれはgithubを見るときにも表示を遅くして非常に鬱陶しいので、hostsに
127.0.0.1 localhost.localdomain localhost www.gravatar.com secure.gravatar.com gravatar.com
と書いてしまってる

697 :デフォルトの名無しさん:2012/07/30(月) 10:28:19.32
今時Win板hostsスレを参考にするなんてかっこわるいよ
AdBlock系でgravatar.comをブロックとかの方がスマート


698 :デフォルトの名無しさん:2012/07/30(月) 10:31:19.18
>>697
> も

704 :デフォルトの名無しさん:2012/08/02(木) 19:52:42.09
git stash save で、特定のファイルだけを指定してsaveできないかな。
すべてをsaveする仕様は使いづらい。

708 :デフォルトの名無しさん:2012/08/03(金) 18:05:40.89
設定ファイルみたいにclone時には含めたいけど、
pushさせたくないファイルってどうすればいいんですか?
--assume-unchangedはcloneとかresetで元に戻ってしまうみたいだし、
clone毎に設定しなきゃならないとヒューマンエラーの元になりそうだし。
~.ini.sample作って~.iniをgitignoreに入れとくしかないんですかね?

710 :デフォルトの名無しさん:2012/08/04(土) 09:31:31.34
>>708
setting.ini.inでコミットしておいて
configureでsetting.ini.in -> setting.ini
を生成するのが一般的かな。


726 :デフォルトの名無しさん:2012/08/18(土) 21:40:10.58
質問なのですが、gitのレポジトリはどのディレクトリに作成していますか?
/var/lib、/usr/local、~/以下など何か慣例はあるのでしょうか。

739 :デフォルトの名無しさん:2012/08/27(月) 03:22:47.33
GitHubのissue報告のページにはどういうマークアップ記法が使われていますか?
コードの部分をそれと分かるようにしたいです。
プレーンテキストオンリーは嫌です

744 :デフォルトの名無しさん:2012/08/30(木) 21:37:16.07
以下の様な場合どのようなコマンド・処理が適切でしょうか?
状況:パソコンAで少しずつ修正をかけて、パソコンBでそれを見る
パソコンAから共用リポジトリへpush→共用リポジトリからパソコンBへpull
という操作を繰り返すことになるのですが、
そうするとコミットの履歴がどんどん増えていくことになります。
なので、共用リポジトリに前回pushした内容を上書きする(1つのコミットを修正し続ける)ような形にしたいです。


747 :デフォルトの名無しさん:2012/08/30(木) 21:50:54.77
>>744
作業用に一時的なブランチを生やして作業、最終的にまとまったら--squashでマージ

749 :デフォルトの名無しさん:2012/08/30(木) 22:00:56.28
>>744
ftp put / getというコマンドが適切。

750 :デフォルトの名無しさん:2012/08/30(木) 22:41:53.36
>>749
だせえwいまどきFTPかよww


http://toro.2ch.net/test/read.cgi/tech/1329234309/l50/../人気ブログランキングへ

PC等CVS導入スレ~ Rev.3

1 :デフォルトの名無しさん:2005/04/10(日) 22:58:38
バージョン管理システムCVSについてのスレッドです。

前スレ : 「CVS導入スレ?? Rev.2」
http://pc8.2ch.net/test/read.cgi/tech/1065829553/

関連スレとリンクは>>2を参照

2 :デフォルトの名無しさん:2005/04/10(日) 23:00:03
関連リンク
http://www.cvshome.org/
http://www.wincvs.org/
http://www-vox.dj.kit.ac.jp/nishi/cvs/cvs.html
http://kahori.com/j-cvsbook/
http://www.sodan.org/~penny/vc/cvs-ja.html

関連スレ
Unix板 : 「CVS 1.3」
http://pc8.2ch.net/test/read.cgi/unix/1093611448
LInux板 : 「Subversion スレッド その3」
http://pc8.2ch.net/test/read.cgi/linux/1100622362

LOCや生産性など、CVSと直接関係のない話題はご遠慮下さい。

9 :デフォルトの名無しさん:2005/04/11(月) 13:31:00
ごった煮使ってるけど、SSHでトンネルすると、ログウィンドウの表示が変。
たとえば、グラフ表示させて適当なリビジョンの情報見ようとすると、
日付は"1900/0/0 0:0:0"ばっかし、まともなのはコミット時のメッセージぐらい。
コマンドプロンプトから直接コマンド打ってログとればちゃんと表示されるから、
たぶんWinCvsがおかしいんじゃないかと思うんだけどねぇ。

Subversionは、「リポジトリが壊れた」なんて話題が出ているうちはまだ使いたくないなあ。

25 :デフォルトの名無しさん:2005/04/24(日) 14:48:56
WinCVSの肝心のGUIが糞な件について

87 :デフォルトの名無しさん:2005/07/16(土) 18:31:51
cvs import するソースツリーに画像などのバイナリファイルが含まれています。
cvs add するときはバイナリファイルだけ -kb すればいいと分かったのですが、
import の場合はどうすればいいでしょうか?


88 :デフォルトの名無しさん:2005/07/16(土) 18:41:23
>>87
こんな感じかな?
cvs import -I ! -I CVS -W "*.png -k 'b'" -m "Message" path vendor release
私ゃ横着もんだから
cvs import -I '*' path vendor release
してからcvs add しちゃうけど。

241 :デフォルトの名無しさん:2005/11/17(木) 08:05:14
「従って」は不要。写真だろうがイラストだろうが著作物に著作権が
発生するのはあたりまえ。
フォントももちろん著作物。


249 :デフォルトの名無しさん:2005/11/19(土) 17:45:55
CVSってロールバック機能や、ソースコードの比較とかできないじゃん。
使えないよ。

VSSのほうが上。


270 :デフォルトの名無しさん:2005/11/21(月) 18:14:24
今日からCVSを使い始めました。超初心者です。
質問なのですが、すでに出来上がってしまったソース群をCVSでimportして
最初にcheckoutすると、全てのファイル日付がimportした日付になってしまうの、
何とかならないのでしょうか?そーゆーものですか?

273 :デフォルトの名無しさん:2005/11/21(月) 20:02:08
>>270
そういうものです。
そうならないとtimestamp見てるmakeがサボります。

274 :270:2005/11/21(月) 20:47:00

>>273
thx !
ついでに、もう一件、お願いします。
import 時、-I で無視したファイルって、checkoutしたら戻りませんよね?
アイコンファイルなど、いつも必要だけどCVSで管理する必要のないファイルとかは、
やはりバイナリでちゃんとCVS管理するものなんでしょうか?
-I ってのは、復元する必要すらないファイルに限られるのでしょうか?

277 :デフォルトの名無しさん:2005/11/21(月) 23:20:00
>>274
「importしていない=リポジトリに存在しない」
なんだから、チェックアウトする術がない。

makeに必要なファイルは全てimportするのが吉。
(ただし、make時や統合環境起動時に自動生成されるものは除く)

279 :274:2005/11/22(火) 11:27:19

>>277
なるほど、どうもありがとうございました。

でも、libファイルがバイナリ指定してimportしてcheckoutしても戻ってこない…なぜ??


380 :デフォルトの名無しさん:2006/04/20(木) 23:28:55
すごいの見つけてしまった
ttp://d.hatena.ne.jp/seiunsky/20060420/1145536580


444 :デフォルトの名無しさん:2006/07/11(火) 08:35:38
>>380
うはwちょ、それおれのプログwww

やっぱり、普通はそんな運用の仕方ってしないんだよね?

445 :デフォルトの名無しさん:2006/07/11(火) 12:57:36
>>444
してるところもあるよ。
まぁ普通は単体テスト完以降にそのような管理をしたりする。
その管理する人たちのことをライブラリアンと呼ぶとこもある。

448 :444:2006/07/11(火) 22:47:04
>>445
あぁ、確かにライブラリアンって呼ぶこともあるね。聞いたことある。

> まぁ普通は単体テスト完以降にそのような管理をしたりする。
なるほど。確かに単体テスト以降なら慎重になることやバグ修正の周知って意味でもメールの重さがでてくるから、やる意味がわかるよ。

でさ、こういう状況で上司とか先輩にどうやって説得すれば良いんだろう。
上司&先輩曰く、ヒューマンエラーを防ぐためだって。
ファイルを誤って消してしまったりする可能性(=アクセス権のある人の人数)を下げるためだそうで。

そういうことを考えるからこそ、バージョン管理システムを導入するんじゃねーのか、とか思ったりするけど。
当時は(今もだけど)あんまり良くわかってなかったから、「そういう考えもあるかぁ」と思って食い下がれなかったんだよね……。

450 :デフォルトの名無しさん:2006/07/11(火) 23:06:29
>>448
どの程度の規模の会社(チーム)で、どの程度の規模のプロジェクトなのか
不明なのでざっくりしたことしか言えないけど、ライブラリアンが居るということは、
ライブラリアンがリリースしたものに責任を持つということね。

各々が勝手にリポジトリにアクセスしても結構だけど、他のチームが
バグ入りかもしれないファイルをcvs updateして取得してしまって、それを
使って自分たちのモジュールをテストしたりした日にゃ、現場は混乱だよ。

特に大きなプロジェクトでは、単体テスト以降は、バグの発生確認と、
原因の特定、バグフィックスの確認と修正済みファイルのリリースを
管理しなきゃならないから、個々人が勝手にやると困ったりする。

小さな会社(チーム)で、なおかつ同じ場所で開発してるなら、その間に
いる人は余計だけどね。

588 :デフォルトの名無しさん:2007/04/04(水) 20:43:19
1つ教えて下さい。
CVSで自動ビルドしようと思っているのですが、上手くいきません。

自動ビルドは以下のように動くスクリプトを作りました。
 1.cvs checkout する
 2.ant でビルドする
 3.ビルドした実行ファイルを、ウェブ領域にコピーする(公開する)

コミットしたときにこのスクリプトを呼び出すように CVSROOT/loginfo などに設定したのですが、上手く動きません。

というのも(おそらく)コミットしている時に自動ビルドスクリプトが呼び出されてチェックアウトしようとするのですが、コミット中なのでロックがかかっていてチェックアウトが出来ないのです。結果いつまでもロックが解除されるのを待つだけになってしまいます。


みんなどうやって自動ビルドをやってるの????
毎晩4時に自動ビルドなの?
出来ればコミットごとにビルドしたいんだけどなぁ…。

589 :デフォルトの名無しさん:2007/04/04(水) 21:14:42
コミットを検出してから適当な時間が経ってからビルドすればいいだけじゃないの?

590 :デフォルトの名無しさん:2007/04/04(水) 22:08:02
>>588
うちは深夜に自動ビルドしてるよ。
コミットはいつでも自由に行って良いというポリシーな上に、
ビルドに加えて単体テストとカバレッジ測定、そのレポート生成までやってて
時間がかかる(30分程度)ので、
うちじゃコミットで自動ビルドは非現実的。

ところで、コミットで自動起動されたビルド中にコミットされたらどうするつもり?

591 :デフォルトの名無しさん:2007/04/04(水) 22:34:57
>>588
うちはいまんとこ早朝と昼休みに自動ビルドしてる。

いまテキトーに考えると、最終コミットからn分経ったら自動ビルド
(や単体テスト・カバレッジ測定など)を起動するなら、
こんな手順でいいんじゃないかな。

1) loginfoでどっかにファイルを作る。例えば /var/ のどっかに。
2) cronで数分おきに1)で作ったファイルを調べて、
ファイルが存在していて、なおかつファイルの更新日時からn分経過していれば
2.1) 1)のファイルを消す。
2.2) CVSからexport・ビルドなどを実行する。


592 :デフォルトの名無しさん:2007/04/05(木) 00:04:22
>>588
サーバにチェックアウトしたものを置いといて
コミットのたびコミットされたファイルにアップデートかければいいんじゃないかな
毎回チェックアウトじゃ時間かかるでしょ

因みに、CVSはロックファイルを作りに行くからコミットされた時と同じプロセスでチェックアウトするとアウト
&とかつけて回避するしかないみたいよ

593 :588:2007/04/05(木) 03:00:43
いやいや、こんなに親切な回答が貰えるとは思ってませんでした。感謝感謝。

>>589
やっぱそれが一番なのかな…。

>>590
周りでもビルドはコストがかかるから、コミットごとのビルドはやめとけ
という意見が多かったですよ。でも私の場合は1人開発だし、コミット回
数も少ないから(まとめてコミットする癖がある)イケルかなぁと思った
んですが。

>ところで、コミットで自動起動されたビルド中にコミットされたらどうするつもり?

・・・どうしよう。(--;

>>591
ごっつあんです。まあそういうやり方になるんでしょうなあ。

>>592
いやまあチェックアウトかアップデートかと言われりゃその通りなんですが
質問の主旨はそこではないわけで。でも親切にご指摘ありがとやんす。

ロックされちゃう問題は、やっぱそういう回避方法しかないんですね。
それが分かっただけでも収穫です。


・・・・・・・・・まあ、cron で解決しますかね。
皆さん、ありがとうございましたー。

594 :デフォルトの名無しさん:2007/04/05(木) 07:54:14
>>593
一人開発なら、「コミットしてから裏でビルドする処理を起動するスクリプト」を作ればいいじゃない。

602 :デフォルトの名無しさん:2007/04/26(木) 10:18:47
マジレスすると、CVSを使い込んだ人間ほどSubversionはもっとも嫌な選択肢。
俺の職場ではSubversionで始めたプロジェクトを、きりのいいところでCVSに
変更しようかという声さえある。

ところで、TortoiseCVSで、今ない(消した)ファイルをリポジトリから削除ってできないのかな。
別のツールでファイル調整した後にリポジトリに反映させたいときとかに不便。

TortoiseCVSって、一般的には絶賛されてるけど、使いにくくてかなわんがなあ。
WinCvsは淘汰されてしまったんだろうか。コードの扱いなんかはTortoiseの方が優れてるしなあ。
しょうがないから最新版を修正しようかと思ったら、VC++2005 Expressではエラーになるし。

607 :デフォルトの名無しさん:2007/05/02(水) 23:03:41
どうでもいいけど、とりあえず>>602です。

確かにSVNコミュニティの腐った根性は嫌いだが、まさかそんなことだけでSubversionを評価してるわけじゃない。
そもそもSVNコミュニティの腐れ根性を知っているのは職場で俺ぐらい。

ウチの職場で不評だったのはだいたいこんなところ。
タグ/ブランチが結局コピーで、実質ブランチがいっぱい出来るだけとか、また、コミットすると、
変更してないファイルのリビジョンまで無意味にあがったりというリポジトリの基本思想とか、
Subversion単体(の通信)では、リポジトリに細かな(といっても基本的だと思うが)アクセス制御が
かけられなくて、結局Apacheや外部のモジュールに依存しているとか、TortoiseSVNのリビジョングラフ
は使い物にならないとか、そういったところ。

俺も時代がSubversionに流れているなら、そろそろCVSから移行しようかと思っていたんだけど、
調べれば調べるほど嫌になってくるんだよね。
間違ってれば誰か正してくれ。

632 :デフォルトの名無しさん:2007/06/26(火) 10:21:42
Delphi4で、ソースをCVSにいれてみました。
ソースのうちdfmファイルはバイナリですが、convert.exeを通したらテキストにできます。
(5以降は開発環境自体がテキストで読み書きできる)
これで管理してみようと思ったのですが、マージで詰まりました。

開発時はバイナリで保存して、テキストにしてcommitします。
マージ時はテキストで保存して、クライアントではまたバイナリに戻します。
ここでテキストとバイナリのどちらが主とも従ともいえなくなって、
変換が追いつかなくなってしまいました。
似たようなケースがあったら、対処法とか知りたいです。

635 :デフォルトの名無しさん:2007/06/27(水) 00:47:41
いや、Subversion だったらバイナリのままコミットとしても
ちゃんと差分で格納してくれる。

なんかのツールでテキストにできるなら、差分も見るときだけ
テキストにするようなスクリプト書いておけば、通常はバイナ
リしかないので、どっちが主かなんて悩まなくても済むでしょ。

636 :632:2007/06/27(水) 10:17:24
テキストを主として考えるなら、
Delphi4自身がテキストを読めるようなプラグインが必要そうです。
今のところ見つかっていません。

バイナリファイルだけれど、差分・マージの前にテキストに変換とか
そういう機能は無いでしょうかね?
WinMergeのプラグインみたいなイメージです。

subversionはよく知らないんですが、
コミット時に差分とるとしてマージはどうなるんでしょうか?
バイナリでマージってイメージつかめなくて・・・


637 :デフォルトの名無しさん:2007/06/27(水) 12:00:26
>>635
CVSでも一応差分で格納される。効率は悪いかもしれないが。

639 :デフォルトの名無しさん:2007/06/27(水) 12:24:57
>>637
区別無しに diff かけてるだけだよね?
0x0a がたくさん入ったバイナリファイルについて小さな変更したときは
それなりのサイズに収まるとか。

641 :デフォルトの名無しさん:2007/06/27(水) 23:35:22
>>636
> バイナリでマージってイメージつかめなくて・・・

すまん、マージで困ってたんだよな。バイナリの直接マージは無理。

テキストにしてマージしてからバイナリに戻してコミットするしかないと思う。

TortoiseSVN とか使えば、拡張子毎にマージツールを指定できるから、
バイナリ ⇔ テキストのコマンドが外部から呼び出せれば何とかなるような気
もする。

つーか、コミットする時に dfm ファイルだけテキスト化して、チェックアウト
する時に dfm ファイルだけバイナリに戻すラッパーを書いたほうが早いかも...。

>>637
ん? どのバージョンから?

昔の CVS ではバイナリは各バージョンをそのまま格納するしかなかったはずだが。

>>639
その状態でキーワード変換とかしないようにする方法があるの?

667 :デフォルトの名無しさん:2007/09/18(火) 10:46:43
rmしてcvs updateじゃダメなん?

760 :sage:2009/04/17(金) 08:49:08
cvs update した後、ファイルのどこがどのようにupdateされたのか知る方法を教えてください。。

761 :デフォルトの名無しさん:2009/04/17(金) 13:08:48
一つ前のリビジョンと比べりゃいいじゃん。

762 :デフォルトの名無しさん:2009/04/17(金) 14:13:34
1. コピーをとる
2. cvs updateする
3. diffをとる

763 :760:2009/04/17(金) 20:25:50
>>761の方法では無理だと思います。

>>762
やはりそれしかないのか。。
コピーとってなくて、アップデートした後にアップデート前の状態に戻すことってできないのでしょうか?

764 :デフォルトの名無しさん:2009/04/18(土) 22:27:06
>>763
「アップデート前の状態」がどこかに保存されていれば可能だが…

そもそも、1つのファイルを複数人で同時に修正するのが変。

おそらく、 >760 は、他人が修正した箇所が何処か知りたいのだろうが
モジュール分割を間違っているか、運用が不味いかのどちらか。

766 :デフォルトの名無しさん:2009/04/20(月) 11:13:29
「update前の状態」は2種類考えられる。
一つは一つ前のリビジョンであり、もう一つはローカル修正済み。
前者は勿論リポジトリから取り出せるし、後者はマージの残骸が残っている筈。
何が不満なのか判らんが、自分のやりたいことも他人に伝えられないから
ツールを使いこなすこともできないと言うことなんだろうな。

767 :760:2009/04/20(月) 19:56:30
みなさん言いますね。情報不足で申し訳ない。

updateした後、
マージ(Need Merge)された場合はたしかにバックアップが残るから元に戻せるけど、
パッチ(Need Patch)の場合はバックアップは残らない。

使いこなしてる>>766、後者の場合に元に戻す方法を教えてください。

>>764
モジュール分割してもメインモジュールは複数人が修正する可能性があるだろ。
もしかして、複数人でやったことない?

768 :デフォルトの名無しさん:2009/04/20(月) 20:24:05
cvsでcolordiff使いたいんだけど
svnみたいに環境変数か設定ファイルを使って
diffを差し替えることは可能?

769 :デフォルトの名無しさん:2009/04/20(月) 20:26:18
>>767
うっとおしいけど、編集権を奪うようにしてるから
とくに競合したことは無いな。
人間同士でのすり合わせがギスギスするけど。

770 :デフォルトの名無しさん:2009/04/20(月) 23:15:57
>>767
一つ前のリビジョンじゃなくても、自分が最後にコミットしたリビジョンまで
さかのぼれば見られるだろーよ。そういう GUI ツールもあるだろ。
頭かてーやつだな。

>>768
環境変数ではでけん。
Windows なら亀とか使えばいいんでない。
俺は Linux では、リポジトリの最新を /tmp とかに取り出して、
それとローカルコピーとを vimdiff に渡すスクリプト書いて
使ってた。

771 :760:2009/04/21(火) 00:23:32
>>770
一つ前のリビジョン??
お前は頭が柔らかすぎて何を言ってるのかわからんが、
とりあえずCVSだけでは無理ってことかでおK?

しかし、俺以外にこの疑問をもたないのはなぜ?
(複数人での開発で)updateコマンド打った後に、
バックアップファイルが作られてないファイルの自動的変更された内容って気にならないの?

実行して不具合が生じた時、解析に困ると思うんだが。

832 :天使 ◆uL5esZLBSE :2011/07/04(月) 04:04:26.61
> win7 32bit クリーンインスコ出来た
↑↑↑ハアァア???????
氏ねよゴミ



http://hibari.2ch.net/test/read.cgi/tech/1113141518/l50人気ブログランキングへ

学ばないブログ
忍者AdMax
記事検索
最新コメント
QRコード
QRコード
  • ライブドアブログ