- 開発環境のソースをwindowsから開発 ← つまりsambaを設定する
- 開発環境の作業コピーとリモートリポジトリ間のgit操作をWindowsからSourceTreeで行なう
つまり、この不安を煽るレベルで線の粗い下記の図のようなことをしたい
手順
- sambaを設定し、windowsから開発環境に直接アクセスできるようにする
- 開発環境 ⇔ リモートリポジトリ間のsshキー登録
- SourceTree ⇔ リモートリポジトリ間のsshキー登録
- SourceTreeから開発環境に作業コピーを作成
- あとはpushなりpullなり自在にできるようになる(あとは快適なSourceTreeライフを!)
...と順調にいければそれに越したことはないが、何かとエラーが発生したので、そのエラーと対応について以下にまとめる
そもそもcloneでsshのurlを指定すると永遠にgitリポジトリであることを認識してくれない
urlからcloneする際に、通常であればcloneするリポジトリを指定すればSourceTree側からGitリポジトリであることを認識してくれる。
ここで、sshのurl(git@bitbucket.org~から始まるurl)を指定してもずっと読み込み中になってしまうという現象に見舞われる。
ちなみに、httpsのurlを設定するとこれが認識できたりする。
原因:思わぬ場所のsshの設定が足りていない
開発環境 ⇔ リモートリポジトリ間もSourceTree ⇔ リモートリポジトリ間もsshの設定ができたのにまだ足りないというのか!?
はい。そうです。
コマンドプロンプトで以下を実行
※ 「privatekey.ppk」の箇所は自分で設定した名前
> C:\Program Files (x86)\Atlassian\SourceTree\tools\putty\
> plink.exe -ssh -C -i "privatekey.ppk" git@bitbucket.org
あとはこちらを参照
http://qiita.com/moo/items/5ee3208254c34719914b
開発環境上では出てこないmode変更の差分が出てくる
ようやくgit cloneができたかと思ったら、今度は身に覚えのない差分がわんさかと出てきて泣けてくる。
原因:filemodeの設定がtrueになっている
そういった時はwindows側の.gitconfigと、開発環境の作業コピー内の.git/configに以下の設定を追加する。
[core]
repositoryformatversion = 0
filemode = false
こちらを参照
http://qiita.com/hishida/items/35d929845c0ac824b1c0
indexにステージしようとしても「error: unable to write sha1 filename [作業コピーの場所]/.git/objects/pack/pack-[なんか不規則な文字列].pack: Permission denied」と出てしまう
よし、cloneができて余計な差分もでなくなった。
気を取り直して変更内容をpushしてみようという矢先にコレである。
一難去ってまた一難とはまさにこのことだ。諦めたくなる。
原因:sambaの設定不足
/etc/samba/smb.confに以下の行を追加して再起動をする。
create mask = 0777
force create mode = 0777
security mask = 0777
force security mode = 0777
directory mask = 0777
force directory mode = 0777
directory security mask = 0777
force directory security mode = 0777
その他の設定はこちらを参照
http://language-and-engineering.hatenablog.jp/entry/20110820/p1
これらの設定を経て...
indexに変更ファイルをステージできた🎉
commitもできた✨
pushもpullもできた😂
めでたしめでたし。諦めないで良かった。