SSブログ

GitHubに上げる時にちょっと気になる [ソフトウェア]

今まで、.xcodeplojバンドルをgitに登録する時には、個人情報が含まれる部分を入れないで、add, commitしていた。Xcode4ではgitに対応しているみたいなので、使ってみようと思っているが、.xcodeplojバンドルの中身って、どう入れ込まれるのかが気になった。

Xcodeの表示では、project.pbxprojというファイルしか見えなくて、それだけで大丈夫なのかよ、とちょっと不安。バンドルの中には、以下のファイルが入っていた。

alpha.pbxuser
anlingo.pbxuser
project.pbxproj
project.xcworkspace
hogehoge.mode1v3
hogehoge.pbxuser
xcuserdata

xcuserdataってのは、ディレクトリだけど、名前からしてユーザーデータなので無視する。実際、ブレークポイントとか大したものは入ってなかった。でも.mode1v3とか.pbxuserとかはもろに使っている名前が出ちゃうのであまりうれしくない。

バンドルの中身をproject.pbxprojのみにして立ち上げたけど、問題ないみたい。当然、自分が設定したデバッグなどのプロジェクトの設定はさっぱり消えるわけだけど、他の人が使う分には、そういうのが無い方がきれいでいいでしょう。ソースコードは汚いがな(T-T)。


 
まぁXcodeがproject.pbxprojだけでいいと言っているようなので、とりあえずcommit, push, pullして、きちんとプロジェクトが開けるかどうか、確かめてみよう。でも面倒だなぁ。


それと今回の改変は、ファイルのリネームとか、削除とか、これまでした事があまりない作業をしているので、それをgitに反映させなければなるまい。ということで、作業メモをここに書いておきます。

まず、いくつかのアプリケーションがあるので列挙してみる。

・GitX.app リポジトリの履歴を一覧できる。branchも作れる。commitも出来そう。いまいちstaged changesとかがわからない。リモートリポジトリに上げられない。MacPortsで入れたらしい。

・GitHub.app GitHubに上げる事が出来る。push, pullができるが、synchronizeを推奨してる。いまいちsynchronizeとpush, pullとの違いが分からず(英語だったのできちんと読んでない)。ファイルリストを見ると、網羅的にあげているので、多すぎる時は見にくいが、消したファイルとかもきちんと表示されているので便利かも。ただ、addしてない、いらないファイルまで入れ込もうとするようで、挙動が予測できず、小さい変更で結果を見ないと恐くて使えない。

・git コマンドラインのもの。基本的にこれができないとつぶしが利かないな。かといって、たくさんのコマンドを覚えているほど,たくさんgit使うわけじゃないし。ちなみにMacPortsでMacに入れた。

・Xcode add, commitがお手軽にできる。ファイルツリーに変更したとか加えられたとか表示されるので、コミット漏れは少なそう。プロジェクト全体を選択してコミットするのが楽。でも、リモートリポジトリにpush, pullはできない。


色々あるけど、みんな欠点があって、よく使う作業が全部こなせるのが、コマンドラインのgitだけだったという。動作がどうなるか分からないので、GitHub.appを使ってないが、見た目の分かりやすさとやれる事の多さで有望ではある。今度、小さい変更の時に、使ってみるつもり。結局、コマンドラインか…。


方針を考えてみる

・add, commitはXcodeでお手軽にGUIで済ます。

・削除、移動したファイルは、面倒だけどgit rmと、git mvで地道に。事前の確認はGitXであたりを付ける。ただ、消されたファイルを明示しないので、GitHub.appで確認した方が良さげ。

・リモートリポジトリには、git pushでやる。GitHub.appのSynchronizeが問題なければ、それでお手軽に。



タグを付けておく。commit時のコメントでもいいが、GitHubでその時点のアーカイブを作ってくれるのもあるから、大きな区切りにはなるべく付けておく。

git tag v1.0.7.0 -m "this version's first tag v1.0.7"

Xcode4では変な固定ディレクトリ(~/Library/Developer/Xcode/DerivedData)に入れる事になってしまっているが、それまでのように、自分のプロジェクトがあるディレクトリに生成するように設定した。なので、それらは除外するか、生成される.appだけは残すように仕向ける。


リポジトリからファイルの削除

git rm -r new.xcodeproj

ないファイルはこれでは削れないらしい。もしくはリポジトリの認識されたファイルからもう削ってある?

git help rm

で見てみると、存在するファイルを削って、

git commit -a

すると、削ったファイルも次には残さない様に処理してくれるような事が書かれているので、やってみる。というか、いつものコミットで何でもしてくれてるんじゃん。

実際、delete mode 100644 build/...うんぬんという表示が出てきているので、地元のリポジトリ内での処理はされているみたいだ。

git push origin master

で、アップデートしようと思ったら、SSHのキーがないとか言われた。そういえば、設定しろとかメールで言われてた気がするなぁ。面倒だが、https://github.com/settings/ssh/audit/558100 に行ってみる。あ、ボタン押して認証するだけでいいんじゃん。そういえば、一応前に書いてある手順はしたんだったっけ。色々詳しく読んで損した。



その後、小さい変更でGitHub.appを使ってみたのだが、どうにも既存ファイルで入れたくないものも表示されてしまうので、非常に見にくい。結局、

・commitはXcodeで逐次する。
・リモートリポジトリに入れ込む前は、「git commit -a -m」で網羅して、削除ファイルなどの取り残しがないようにする。
・比較的大きな変更になった時には、「git tag」でバージョンを付けておく。
・リモートリポジトリへは、「git push origin master」「git push origin --tags」で入れ込んでしるしを付けておく。

という運用がいいと思った。

他のGUIのソフトとか、一覧とか見られるのはいいけど、肝心な作業が煩雑になりがち。だから、gitコマンドでやればいいと思った次第です。





久しぶりに、gitを使ったので、ググって参考になったところ。というか、tweetしたし、普通にgoogleの上位記事なんだけどね。googleの悪いところは再帰的にランクが上がっちゃうところだよね。GoogleのSEO対策の対策でそういうのは是正されてるかもしれないけど。


http://blog.asial.co.jp/category/git
以下の三つはヘタウマ絵付きで非常に分かりやすかった。
http://blog.asial.co.jp/894
http://blog.asial.co.jp/925
http://blog.asial.co.jp/1026


リファレンスはちょっと忘れた時に便利。
http://www8.atwiki.jp/git_jp/pages/35.html
情報が日本語で集約されているところがいいね〜。
http://www8.atwiki.jp/git_jp/


リモートリポジトリへの変更をないものにするコマンドってあるのかな、と思ったり。すぐになら、取り消せそうなもんだけどね、全然調べる気になってない。

そもそも、gitのくせに使い方が、複数人がソースをいじるコラボツールとしての真価を全く発揮してないのも、スキルが上がらない一因になってそう。

タグ:freesoft
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。