SalesforceプロジェクトをGitHubで管理する手順についてです。
はじめに
Terminalのコマンドからテキストエディタを起動できるようにしておきます。SublimeTextの場合はこちらの記事を見ながら設定できました。
($ subl "file name" でファイルを開けるようになります。)
Sublime TextをTerminalから起動できるようにする El Capitan対応
GitHubでssh接続できるようにします。その手順はこちらサイトが参考になりました。
gitHubでssh接続する手順~公開鍵・秘密鍵の生成から~
やることメモ
① .sshディレクトリに移動
$ cd ~/.ssh
② 公開鍵・秘密鍵を作成
$ ssh-keygen -t rsa
③ sshキーをGitHubに登録
https://github.com/settings/ssh
④ ~/.ssh/configファイルを作成
$ subl config
⑤ GitHubとの接続確認
$ ssh -T github
configファイル内容のメモ
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa
User <username>
これで記載のあったとおりに接続完了メッセージが表示されました。
Hi <name>! You've successfully authenticated, but GitHub does not provide shell access.
他にもインストールしたりの作業が必要になることがあるのでHomebrewも利用できるようにしておきます。
MacにHomebrewを導入する方法
Salesforceプロジェクトを用意
まずはローカル上にSalesforceプロジェクトを用意します。MavensMateを使っていますがForce.com IDEなど他のツールでも大丈夫です。
GitHubにリポジトリを作成
GitHubにリポジトリを作成します。
Terminalを起動して作業ディレクトリに移動
続いてTerminalでsalesforceプロジェクトのディレクトリに移動します。今回はprojectフォルダを作成し、その中にsalesforceフォルダを用意して作業しています。
$ cd project/salesforce/workspace/trailblazer
Gitの作業環境準備
Gitの作業環境準備します。
$ git init
これで.gitファイルが作成されます。
続いて.gitignoreファイルを作成します。giboコマンドが便利です。
$ gibo dump macOS Windows SublimeText VisualStudioCode Eclipse Node >> .gitignore
※ dumpから先は任意の内容。
giboについてはこちら。
Git:gitignoreを生成できるgiboを試してみました - Part 2 - tyoshikawa1106のブログ
これで.gitignoreファイルを用意できました。
Gitで管理不要なのは下記のファイルです。
# Salesforce Project
config/
package.xml
これは手作業で追加します。
.sublimeプロジェクトも不要です。コメントアウトされているので修正します。
.gitignoreファイルの編集もこれで完了しました。Gitの作業環境準備は以上になります。
GitHubへのアップロード
下記のコマンドを実行してGitHubにSalesforceプロジェクトのソースコードをアップします。
$ git add .
次のコマンドでGit管理対象となったファイルを確認できます。
$ git status
次のコマンドでコミットします。
$ git commit -m "first commit"
続いてGitの作業環境とGitHubを接続します。
$ git remote add origin <GitHubのリポジトリ参照>
最後にgit pushコマンドでGitHubにアップできます。
$ git push -u origin master
検証中、自分の作業環境では.gitignoreファイルがアップされない問題に遭遇しました。なぜかGit管理対象から除外されるファイルがある場合は「.gitignore_global」を確認すればいいみたいです。
$ subl .gitignore_global
確認したところ、ファイル内に.gitignoreが記載されていました。
自分の作業環境でのみ管理対象から除外したいファイルがある場合は「.gitignore_global」の仕組みで除外できるみたいです。今回記載されていた内容は過去によく理解せずに記載したものが残っていただけでした。「.gitignore_global」の内容を綺麗にすると.gitignoreファイルを管理対象に追加できました。
README.mdの作成とGitHubから最新情報を取得する。
GitHubにSalesforceプロジェクトをアップできたら画面上からREADME.mdファイルを作成してみます。
作成したら次のコマンドを実行してGitHubの最新の情報を取得します。
$ git pull
README.mdをローカル上に取得できると思います。
以上の手順でSalesforceプロジェクトをGitHubで管理する環境を構築できました。後は開発を行ったソースコードをgit commitやgit pushで管理していけると思います。
Sourcetreeをつかった管理
環境構築はTerminalでコマンドを実行して行いましたが、環境構築後の日常的なコミット作業やソースコードの差分チェックをTerminalから行うのは慣れがないと難しいと思います。その場合はAtlassianのSourcetreeが便利です。インストール後のセットアップ時にAtlassianアカウントが必要になりますが、初期設定完了後はGitHubと接続して作業が可能です。
初期設定が完了すると次のようにディレクトリをスキャンの表示があると思います。
ここにSalesforceプロジェクトのディレクトリをドラッグ&ドロップやディレクトリを指定して追加します。
これだけでSourcetreeをつかったGit管理が可能となります。
試しにREADME.mdファイルの内容を変更します。
# trailblazer
## Table of Contents
- [Requirements](#requirements)
- [Usage](#usage)
- [Link](#link)
## Requirements
- MavensMate
## Usage
### Create Salesforce Project
MavensMateでLocalにSalesforceのプロジェクトを作成。
```
/Users/<user>/project/salesforce/workspace/trailblazer
```
### Setup Git
```
$ cd project/salesforce/workspace/trailblazer
$ git init
$ git remote add origin <path>
$ git fetch origin
$ git reset --hard FETCH_HEAD
```
### Write package.xml (src/package.xml)
```
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>ApexClass</name>
</types>
<types>
<members>*</members>
<name>ApexComponent</name>
</types>
<types>
<members>*</members>
<name>ApexPage</name>
</types>
<types>
<members>*</members>
<name>ApexTrigger</name>
</types>
<types>
<members>*</members>
<name>AuraDefinitionBundle</name>
</types>
<types>
<members>*</members>
<name>StaticResource</name>
</types>
<version>39.0</version>
</Package>
```
### MavensMate Menu
● Refresh From Server...
- Salesforceから最新のコードを取得できます。
- プロジェクトフォルダを右クリックするとメニューが表示されます。
- 開発作業開始前に実行して差分がない状態にしてください。
### Git Manage Tool
Setup完了後はSourcetreeを使って作業を行います。
## Link
- [MavensMate](https://github.com/joeferraro/MavensMate)
- [Sourcetree](https://ja.atlassian.com/software/sourcetree)
Sourcetreeを見ると差分が表示されます。内容を確認してコミットしてください。
commit時のコメントは1行目にタイトル。2行目は空白。3行目以降に説明を入力する...という話を過去に聞いた気がします。
これをGitHubにプッシュするとREADME.mdが更新されていることを確認できると思います。
GitHubリポジトリからSalesforceプロジェクトを取得
上記でGitHubリポジトリを作成してSalesforceプロジェクトをアップするところまでできました。続いてGitHubからソースコードを取得して開発環境を整える方法です。
はじめにMavensMateでSalesforceのプロジェクトを作成します。枠だけあればソースコードは不要です。
Terminalを起動して作成したプロジェクトのディレクトリに移動します。
次の手順でコマンドを実行してGitHubからソースコードを取得します。
$ git init
$ git remote add origin git@github.com:tyoshikawa1106/trailblazer.git
$ git fetch origin
$ git reset --hard FETCH_HEAD
「$ git pull origin master」などが使えると思います。
問題がなければ先程枠だけ作成したSalesforceプロジェクトにGitHubのソースコードが反映されていると思います。
package.xmlはGit管理の対象外としているので任意の内容に更新します。あとはRefresh from ServerなどSalesforceに連携するコマンドもいつもどおりに実行できると思います。
SourceTreeの利用は上記のときと同じでドラッグ&ドロップするだけです。
これでSalesforceの開発を行いながらGitHubでバージョン管理を行うことができると思います。。
Salesforce DXを本格的に利用する場合は上記とは別の手順になりますが、とりあえずGitHubでバージョン管理したいという場合は上記の手順で対応可能だと思います。