Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用

953 views

Published on

レガシーなWindow&SVN環境で
なんとか救われたい個人開発者の試行錯誤メモです

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

レガシー環境で個人ベースでなんとか頑張るDVCS(Git)運用

  1. 1. レガシー環境で 個人ベースで何とか頑張る DVCS(Git)運用 @kimukou2628
  2. 2. この話の対象の方 こんな仕事場状態の方 世間はGit時代だから個人では使ってるけど、結局 SVNだよ−という方 Androidだから生活端末と開発端末一緒でWindows 端末でいいよね(減価償却的に) @s_kozake 先生が公演されてたお話
  3. 3. 仕事でバージョン管理の というと・・・(1) すごい楽だった仕事場 ソースがGit管理 対象ブランチ=>作業ブランチ切る 作業ブランチに対してMargeRequest発行 GitLab等でレビューを行う AndroiderでもMacが開発端末が可能だったりするw
  4. 4. 仕事でバージョン管理の というと・・・(2) 微妙だった仕事場 一応Git管理(作業ブランチ作業までは同じ) Marge適応ではなくcherry-pick適応が前提 @sinsoku_listy 先生が以前仰ってたローカルコミットを
 reset & 直前コミット修正
 でまとめる黒魔術が前提だったりする。。 複数回 refs #XXX なコミットすると怒られるorz
  5. 5. SourceTreeで
 ローカルコミット履歴を消す
 黒魔術な遣り方
  6. 6. 仕事でバージョン管理の というと・・・(3) よくありがちな仕事場 日本人大好き SVN管理 日本語ファイル名、ディレクトリ名を管理したいから ブランチ名が自由に作れない 再帰参照で重くなるのでブランチ作成はプロジェクト申請制 ブランチ名が日本語 管理者がわかりやすくする?為
  7. 7. SVN環境が普通だとして
 何が問題なの?(1) SVNは基本一本道 誤ったコミットをするとみんなに影響が出てしまう SVNでコードレビューをする場合、リビジョン番号&対象ソー ス一覧を書き出してレビュー願みたいな手作業が発生 複数回 refs #XXX なコミットするとレビューしづらい
 微妙いわれるので、凄く神経使う。。。 修正したコミット時に他人のコミットと混ざって凄く見づらい
  8. 8. SVN環境が普通だとして 何が問題なの?(2) SVNでもアジャイルっぽい進 が希望 仕様決まってない状態でも作業着手しないと間に合わん>< でも中途半端な状況だとコミットは出来ない 1画面1レビューとすると複数画面作業ノルマある場合、
 ローカルに複数プロジェクトフォルダ持つの? 適宜作業ブランチの最新は取り込まないと駄目だよね 複数フォルダ持っていると最新取込反映面倒∼
  9. 9. でこれらを解決しよう とググると SourceTreeでgit-svn 使いましょう みたいな情報がQittaでも出てきて
 楽勝ウハウハな記事を見るわけですが。。。
 そう簡単には行かないわけです・・ まあレガシーな環境だから仕事場に任せて苦労するっ てエンジニアとして工夫足りないよね! どうせ進 とか結果しか見ないわけですから。。。
  10. 10. windowでgit-svnして
 ハマった/困ったこと(1) SourceTree SourceTreeだけインストールな状況だとgitコマンド打ちたい時死ぬ SourceTree付属のターミナルだとテキストメモってたコマンドとか
 コピペ出来ないのでPortableGit別途導入 日本語ブランチ名が git svn clone <<http://URLエンコードしたURL>> 
 が出来なくて悩んだ SourceTree経由だと出来るが重い∼><。(発行してるコマンド打つのが速い) git -c diff.mnenonicprefix=false -c core.quotepath=false svn clone 
 <<http://URLエンコードしたURL>>
  11. 11. windowでgit-svnして
 ハマった/困ったこと(2) 元々のコードがLF/CRLF、TAB/SPが入り混じりだった git config --global core.autoCRLF false 
 がデフォルトではない git svn dcomit した途端、改行コード変換による差分多くて
 以前の戻してやり直しといわれて阿鼻叫喚>< ASでSaveAction/ADT でformatter自動適応設定 してたら 同じ状況で(ry
 => formatter自動設定切った。。。
 (WinMargeとかでソース差分抽出してExcel貼付納品物とかあるらしい。。) TortoiseSVN とかでもそうだけど一度フォルダ内を空にして
 svn checkoutするのでローカルだけ持っておきたいファイル保持できない。。><
  12. 12. で結局どうしたか git-svnは取込のみにする
 
 コミットはTroiseSVNでsvn経由で行う .svn/.git の二重管理になるけど、こっちのほうが手間が少ない git svn 運用していて.gitの状態がおかしくなることがあるけど、作業ブランチ使い終わっ た後
 .git自体を別ディレクトリでgit svn clone したものを置きなおせば環境復活しやすい git-svn操作は SouceTree上からだと状態やエラー凄くわかりづらいので
 結局コマンド操作 git svn rebase がローカル差分無状態での全取込マージなので仕方ないかも・・・ git pull にあたるものが git svn コマンドにはないからな。。。 git-svn master 作業ブランチA 作業ブランチB
  13. 13. で実作業的な流れ(1) SoureTree 作業ブランチA=>master マージ適応 変更対象分のみgit comit(localレポジトリのみ) TroiseSVN svn update で最新の差分を取得 svn commit で対象ファイルを選択、show logで差分確認コミット 追加したファイルはフォルダ移動して svn add するの多少面倒
  14. 14. で実作業的な流れ(2) コマンドプロンプト ローカルの masterブランチ git svn fetch で差分を確認 差分がないなら終了(svn commitした直後なら差分有るはず) local commitしていないもので
 svnから変更取り込み git svn rebase 取り置き必要な物を再適応必要なら git stash apply stash@{0} 取り置き必要 git stash 取り置き不必要 git checkout ./
  15. 15. なんでTroiseSVN使ってるの? eclipse等のSVN Connecterの リポジトリ同期使ってもいいけど・・・ svnの管理外のローカルに保持しておきたいファイルが勝手にコミットされてしまう こととか有る。。。 そういうところほど
 .svnignore/.gitignore 作ってないよね。(端末内のgrobalで頑張れ言われるw) 場所によっては下記のフォルダとかもコミットされていたりする
 (ここらへんはアルアル怖い話とかになりそうですね∼ local.properties gen

×