複数環境(Windows, Linux, Mac)におけるGitでの開発のやり方

photo credit: Jeremy Kendall via photopin cc

テクニカルサポートをしていた、WindowsとLinuxの混在環境で開発しているチームからマージ/ブランチに関する課題が報告されたので、それへの対応手順を記載する。

前提

  • WindowsにVagrantでUbuntuの開発環境を構築している
  • Ubuntuの開発環境でgit cloneやテストを実施している
  • WindowsでソースをSublime Textで編集している
  • Sublime Textのプラグインを使って、Ubuntuとftp接続しているが、Ubuntuとブランチ情報が同期できず、ずれている

つまり、以下の状態。

GitHub->git clone->Ubuntu<-ftp->Windows

対応策

UbuntuのGit RepositoryをWindowsにgit cloneする

GitHub->git clone->Ubuntu<-ftp->Windows
↓
GitHub->git clone->Ubuntu->git clone->Windows

そもそもGitのメタ情報であるブランチ情報をftpでファイルのやりとりの際には含めていないためにこのズレは発生している。Gitコマンドでやりとりすればズレは発生しないので図で説明して提案したところ、回答は

「よく分からないからヤダ」

というわけで別の策を提案することに。

GitHubからWindowsとUbuntuはgit cloneする

GitHub->git clone->Ubuntu<-ftp->Windows
↓
GitHub->git clone->Ubuntu
      ->git clone->Windows

そもそもGitのメタ情報であるブランチ情報をftpでファイルのやりとりの際には含めていないためにこのズレは発生している。Gitコマンドでやりとりすればズレは発生しないので図で説明して提案したところ、回答は

「動くかどうか分からない状態でコミットするからヤダ」「編集する度にコミットするのは面倒だからヤダ」

というわけで別の策を提案することに。

UbuntuにSublime Textをインストールする

そもそもソースコードを編集したいという理由のためだけにUbuntuとWindowsでファイルのやりとりをしているのだから、UbuntuにSublime Textをインストールすればすむ話である。提案したところ、

「インストールできません」

という回答で、コマンドを確認したところ、ぐぐって調べたコマンドを勝手に書き換えて実行していたので、動かないのは当然というか、なんというか…。そこに対応してインストールが終わり、その後、X Window Systemをインストールしていないので、そのままだとSublime Textが使えず、それもインストールして対応完了。

雑感

相手にWhy(なぜ/理由)を伝えることは大事。Forkしての運用を提案をしたところ、

「Forkは禁止なのでダメ、Herokuも動かないし」

と回答され、思わず「ハッ?」となった。

色々Repositoryの設定を確認すると、

  • Collaboratorに参加者が登録されている
  • Collaboratorに登録されているからわざわざforkして編集後にPull Requestしなくてもよい

となっており、そのため(?)、「Fork禁止」になっていた模様。本人も理由を分かっていなかったので、こういうのは良くないなと感じた。