MacでGitをポータブルインストールする

# MacでGitをポータブルインストールする

**[【ぜんぶポータブル】ポータル](https://qiita.com/jtFuruhata/items/f9788da8e480c646a2a9)**

**最終更新:2019年2月26日** .commandとdirnameを使用するよう変更

せっかくなのでMacでもGitをポータブルにします。
【ぜんぶポータブル】フォルダ構造を前提に説明していますので、適宜お使いの環境に読み替えてください。

## 動作確認に使用した環境
- macOS Mojave バージョン 10.14.3（管理者権限が必要です）
- ポータブル環境フォルダは`~/OneDrive/jtHiuPortable`にある

## 既にGitをインストールしている方へ
現在Gitを使っていない方は[読み飛ばして](#Gitをインストールする)ください。

Mac向けの主要なパッケージインストーラー等によるGitのインストール先は以下の通りです。

- XCode command line developer tools → `/usr/bin/git`
- Homebrew → `/usr/local/Cellar/git/○.○.○/bin/git`
- MacPorts → `/opt/local/bin/git`
- git-osx-installer → `/usr/local/git/bin/git`

したがって、各種Gitを既にインストールしている方が下記の手順で「git-osx-installer」をインストールしても**悪影響はありません**。
引き続きXCode/Homebrew/MacPorts版を使用する方は、ポータブル環境構築後に`/usr/local/git/uninstall.sh`を実行してください、完全に元通りになります。

## Gitをインストールする
[Git](https://git-scm.com/)のサイトから[git-osx-installer](https://sourceforge.net/projects/git-osx-installer/)の.dmgをダウンロードし、その中の`git.○.○.○-intel-universal-marvericks.pkg`をインストールします。
ただし、いわゆる「開発元が未確認」モノなので、`Ctrl`キーを押しながらアイコンをクリック→メニューの「開く」→「開く」ボタン、で起動します。普通にインストールしてください。

次に、このGitをディレクトリまるごとポータブル環境フォルダへコピーします。

```bash:Bashコマンド
cd ~/OneDrive/jtHiuPortable/apps/mac
cp -r /usr/local/git ./git
```

次に、環境変数HOMEとPATHを変更したBashを起動するシェルスクリプトを用意します。 [^OneDriveデフォルトのパーミッション]

[^OneDriveデフォルトのパーミッション]: OneDrive経由でMacに新規ファイルが追加される場合、パーミッションは自動的に755になります、が、Macで新規ファイルをローカルのOneDriveフォルダへ追加する際には、いつもと同じパーミッション付与動作になります。

```bash:Bashコマンド
touch setPath.command
chmod 755 setPath.command
```

```bash:setPath.command
#!/bin/bash
echo Portable Console is preparing environment variables.
export HOME_Backup=$HOME
export PATH_Backup=$PATH
CURRENT=$PWD
cd `dirname $0`/../..
export HOME=$PWD
cd $CURRENT
export AppsMacRoot=$HOME/apps/mac
export GitD=$AppsMacRoot/git
export PATH=$GitD/bin:$PATH
echo Portable home has located in $HOME
echo Portable applications have located in $AppsMacRoot
export PS1="Portable:\W \u\$ "
bash
```

これを使えば大丈夫です。

```:ターミナルでの実行
Mac:mac me$ ./setPath.command 
Portable Console is preparing environment variables.
Portable home has located in /Users/MyName/OneDrive/jtHiuPortable
Portable applications have located in /Users/MyName/OneDrive/jtHiuPortable/apps/mac
Portable:mac me$ which git
/Users/MyName/OneDrive/jtHiuPortable/apps/mac/git/bin/git
Portable:mac me$ git --version
git version 2.20.1
```

2019年2月26日追記：Finderからでもダブルクリックで起動できます。

<!--
## Finderからダブルクリックで起動できるようにする
~~残念ながら標準ではBashスクリプトをダブルクリックで起動できませんので、~~AppleScriptから起動アプリケーションを生成します。

まず、コード署名用の証明書を持っていない方は、

1. 「キーチェーンアクセス」を起動（ユーティリティの中にある）
- 「キーチェーンアクセス」メニュー→「証明書アシスタント」→「証明書を作成」を選び、「証明書アシスタント」を開く
- 「証明書のタイプ」から`コード署名`を選択
- 「作成」ボタンを押す

そして、スクリプトエディタ（ユーティリティの中にあります）から以下のように入力してください。

```applescript:openTeminal.scpt
tell application "Finder"
	set the currentFolder to parent of (path to me) as alias
	set the currentDirectory to POSIX path of the currentFolder
end tell
tell application "Terminal"
	activate
	do script currentDirectory & "setPath.sh " & currentDirectory
end tell
```

書けたら「再生ボタン」を押して、きちんと動作するか確認します。

あとは、「ファイル」→「書き出し」を選択、「ファイルフォーマット」で`アプリケーション`を選択、「コード署名」から先ほど作成した証明書を選択して`保存`した後、Macを再起動します。


## 参考文献
azkの日記「覚え書き:AppleScriptでスクリプト自身の親フォルダを取得する」
https://srad.jp/~azk/journal/423903/
2019年2月24日閲覧
-->