git flow hotfix の利用

git flow hotfixがしっくりこなかったのでダミーリポジトリで調査してみた。

git flow hotfixではstartの後に指定したものがそのままタグ名になり
branchにはデフォルトのままだとhotfixのprefixが付与される。
(自分は勝手につくと思い込んでた)

initしてみる

$ git flow init

Which branch should be used for bringing forth production releases?
   - master
Branch name for production releases: [master] 
Branch name for "next release" development: [develop] 

How to name your supporting branch prefixes?
Feature branches? [feature/] 
Release branches? [release/] 
Hotfix branches? [hotfix/] 
Support branches? [support/] 
Version tag prefix? [] release/

branch確認

$ git branch
  develop
* hotfix/fix_nullpo
  master

fix完了

$ git flow hotfix finish fix_nullpo                                                                                                                       
error: Cannot delete the branch 'hotfix/fix_nullpo' which you are currently on.

Summary of actions:
- Latest objects have been fetched from 'origin'
- Hotfix branch has been merged into 'master'
- The hotfix was tagged 'release/fix_nullpo'
- Hotfix branch has been back-merged into 'develop'
- Hotfix branch 'hotfix/fix_nullpo' has been deleted

branch確認

$ git branch
  develop
* hotfix/fix_nullpo
  master

tag確認

git tag
release/fix_nullpo

hotfixのものにreleaseで指定したprefixがつくということはrelease=hotfixという認識で問題なさそうだ。

Git flowの活用事例の利用例で

上司「不具合の発生数を集計してください」

grep tag | grep "fix/" | wc -l

と出ているがreleaseのprefixにreleaseとか入れちゃうとちょっと紛らわしくなるので
何も入れずにgit flow hotfix startの時にfix/を入れてみようと思う。

余談だけどタグはcpみたいな扱いしかできずfix/のprefixつけ忘れたものの付け替えはセルフサービスになるのね。

$ git tag fix/gatsu gatsu
$ git tag -d gatsu

Jenkins + git + ant

FacebookSDKをlibrary projectとして使っていて
そのプロジェクトをJenkinsでビルドしようとしてドはまりしたのでメモ。

最初はsubmoduleとしてビルドしようと思ったがディレクトリ構造いじることになるので却下。
最終的にfacebook-android-sdkはシェルのほうでgit cloneすることになった。

Jenkinsで既存のフォルダ構造を維持したまま指定したサブディレクトリへチェックアウトするには
Local subdirectory for repo (optional)のオプションを指定してやればよさそう。

ついでにシェルでgit cloneするfacebook-android-sdkはこんな感じで同じくサブディレクトリへ出力。

$ git clone https://github.com/facebook/facebook-android-sdk.git library/facebook-android-sdk

上記の手順を行った結果のディレクトリ構造は以下のとおり。

.
├── xxxxx_xxxxx
│   ├── AndroidManifest.xml
│   ├── assets
│   ├── bin
│   ├── build.xml
│   ├── default.properties
│   ├── libs
│   ├── proguard-project.txt
│   ├── project.properties
│   └── src
│ 
└── library
    └── facebook-android-sdk
        ├── CONTRIBUTING.mdown
        ├── facebook
        ├── lib
        └── libs

project.propertiesはローカル環境のままなのでrmしてやってproject.propertiesを更新する。

$ android update project -p ./xxxxx_xxxxx -l ../library/facebook-android-sdk/facebook

git flow はじめました(メモ)

新機能開発開始

$ git flow feature start new_function

新機能開発終了

$ git flow feature finish new_function
$ git push origin develop

新機能開発やっぱやめ

$ git branch
* develop
  feature/new_function
  master
$ git branch -d feature/new_function

新機能をリモートへpush

$ git push origin develop

Jenkins + git plugin

git pluginをJenkinsさんの言われるがままにインストールするとNullPointerExceptionと500エラー。
ダウングレードすれば動くらしいので以下のURLから1.1.26を落としてきて
[プラグイン管理] -> [高度な設定]からgit.hpiをアップロードする。

http://updates.jenkins-ci.org/download/plugins/git/

リストには表示されないのでJenkinsを再起動後[インストール済み]を確認すると表示されるので
チェックを入れて再度再起動する。

git@なリポジトリを入力して赤文字のエラーが出るがコンソールでgit clone成功していれば問題ないです。

EGit + Eclipse + git flow

既存リポジトリにdevelopブランチを作成.

git branch develop
git push origin develop

EGitからURI指定でインポート後にgit flowの初期化を行う.

git checkout -b develop origin/develop
git config --global --add marge.ff false
git flow init

さあ,開発の時間だ.

git flow feature start camera_filter

EGit + Eclipse

既存キーを何度やっても蹴られまくるので途方に暮れた.
解決方法は以下のサイトを参照しました.

cd ~/.ssh
openssl rsa -in id_rsa -out id_rsa-eclipse -des3

これに加えて設定完了後にEclipseを再起動しないとid_rsaを参照し続けるので
パスフレーズでid_rsa-eclipseにちゃんとなっているか確認すること.

user.name
user.emailは特に設定する必要なし.