UiPathとGitの連携


## はじめに  

UiPathには**Git,SVN,TFS**とのソース管理システムとの連携により、
個人or複数人での開発でのソース管理が楽に行えます。
本記事では、GitとUiPathを連携する方法について記載します。  


## なにができる？  
UiPathとGitを連携することで出来ることは多いのですが、
下記2点についてスポットを当ててみます。

- **直前コミットとのDiffを取得する**  

　下図の通り、アクティビティ有無はもちろん、プロパティの変更箇所まで確認できます。
　クリックアクティビティのクリックをシミュレートをTrueに変更し、
　1行書き込みアクティビティが追加されたことが一目でわかると思います。
　また、クリックアクティビティ内の変更されたプロパティ
　「クリックをシミュレート」がnull(未設定)→Trueになっていることも併せて確認できます。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/b40541d2-70d9-90b1-cf7c-13bc2a91afab.png)

- **直前のコミットまで戻すことができる** 

　ワークフローの作成時に色々設定やアクティビティの追加をすると思います。
　いざデバッグしたときに動かなくなってたり、変更に変更を重ねてわけわからなくなった…という時に
　リセットしてコミット時の状態に戻せるということは非常に心強いです。

## 事前準備
1. **Git用語知識**
→「コミットってなに?」状態だとさすがに厳しいので、ある程度Git用語については
　知っておく必要があります。下記参考サイトの「入門編」を読めば、
　今回行うことに関しては大体理解できる筈です。
【参考】<https://backlog.com/ja/git-tutorial/>  

2. **GitHubアカウント**
→作りましょう。
【参考】https://qiita.com/okumurakengo/items/848f7177765cf25fcde0  

3.  **GitHub Desktop**
→後述のやり方でGitHub Desktopを使うやり方であれば必要。
　[こちら](https://desktop.github.com/)からダウンロード可能です。

4. **UiPath Studio**
→言わずもがなですが。。Community Editionで問題ありません。  


## UiPath-Git連携
連携方法について、GUIでとっつきやすいGitHub Desktopを使った方法と、
UiPathが公式で出している方法の2種類記載します。

### GitHub Desktopを使ってGit連携を行う
1. **GitHub上でリモートリポジトリを作る**
GitHubからリポジトリを作成します。
作成の際に「Public」にチェックすると誰でも作成したリポジトリを見ることができるので、
リポジトリの内容を見られたくないのであれば「Private」に設定しましょう。
「Initialize this repository with a README」については任意でOKです。
これにチェックをつけるとリポジトリ作成時、リポジトリ内にREADME.mdファイルが作成されます。
後で追加削除もできます。
![CreateRepository.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/7d156f5f-949b-8b4a-c369-85f3a6402e49.png)


2. **1にて作成したリモートリポジトリをローカルにクローンする**  
GitHubの Repository>Clone or download>Open in Desktopから
（Download ZIPの場合、クローンではなく、ファイルのダウンロードになるので注意）  
![Clone.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/7f3868c6-7298-6673-8388-ab833a9528b8.png)



3. **UiPath Studioから新規プロジェクトの作成**  
UiPath Studioから新規プロジェクトを作成します。
作成途中のプロジェクトで代用も可能です。  

4. **プロジェクトのフォルダをローカルリポジトリに移動**  
Gitで管理したい対象のプロジェクトフォルダを2でクローンした
ローカルリポジトリのフォルダに移動します。
例：プロジェクトフォルダ名「gittest」
![filemove.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/5f79dfba-9990-875b-ed57-52f12d222c28.png)


5. **ローカルリポジトリのコミットとプッシュ**  
4にてローカルリポジトリの内容が変わった（UiPathのプロジェクトフォルダが追加された）ので
変更をコミットしてリモートリポジトリへプッシュします。  
![commit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/fb43840d-be89-abd1-af4e-f835b020af5a.png)
![push.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/5c9950c3-37c4-e05f-0966-ac98c9f8f728.png)



6. **UiPath Studioで確認**
以上で準備完了です。Studioを立ち上げてGitの機能が使える確認。
プロジェクト内のファイルやフォルダの横に「↦」こんなマークが現れていたらGit連携されています。
![main_git.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/b504a57c-270b-f812-5a0f-f1c18e1c81a7.png)  
Git連携されていないときの図  
![main_gitno.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/9edb927a-158f-fb27-e2bd-1c9935a8cc98.png)




### UiPath StudioからGit連携を行う
公式YouTubeに動画上がってますが、噛み砕いて説明します。
URL：<https://youtu.be/F06_ENtuR2k>  

1. **GitHub上でリモートリポジトリを作成する**
GitHubからリポジトリを作成します。
作成の際に「Public」にチェックすると誰でも作成したリポジトリを見ることができるので、
リポジトリの内容を見られたくないのであれば「Private」に設定しましょう。
「Initialize this repository with a README」については任意でOKです。
これにチェックをつけるとリポジトリ作成時、リポジトリ内にREADME.mdファイルが作成されます。
後で追加削除もできます。
![CreateRepository.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/51295f65-e431-d9af-c692-0d595d9c57b3.png)


2. **UiPath Studioから新規プロジェクトの作成**
UiPath Studioから新規プロジェクトを作成します。
既存のものや、作成途中のプロジェクトで代用も可能です。  

3. **UiPath Studioからコミットの実行**
ホーム>チーム>Git InitからGit連携したいプロジェクトフォルダを選択。  
![Studio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/9372f826-6f9f-c053-9596-c5db0141363b.png)
その後、Git連携したいプロジェクトフォルダを選択し、
例：プロジェクトフォルダ名「gittest2」
![folder.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/b3ae13f0-7dc1-749b-0d14-c76343b24067.png)
コミットメッセージを記載して「コミットしてプッシュする」or「コミット」を選択します。  
![commit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/8b7acf12-1400-7666-e42b-6252a39d10ba.png)


4. **コミットしてプッシュする**  
3にて「コミット」を選択した場合、ローカルでコミットされるだけなので一旦は終了です。  
「コミットしてプッシュする」を選択した場合、ローカルでコミットが行われ、
リモートリポジトリにプッシュまでしてくれますので、リモートリポジトリ(1で作成したもの)の情報を入力します。  
 - 名前：1にて作成したリモートリポジトリの名称  
 - URL：1にて作成したリモートリポジトリのURLを貼り付け(GitHubの Clone or downloadからURLが取得できます。)  
名前とURLを入力して「追加」→「保存」  
![remote.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/8bc74962-4c8e-d2c9-e16d-1a924574f053.png)  
初回プッシュの際、この画面が出る場合があります。  
![branch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/d6c4e56c-33ab-a857-149b-cbcca2ab1078.png)

以下どちらかを選択します。
「キャンセル」は文字通りすべてキャンセルします。

 - 「リモートコンテンツを上書きする」を選択した場合
選択したプロジェクトフォルダの内容でプッシュしてリモートリポジトリ内を全て上書きします。  

 - 「プル(リベース)」を選択した場合
リモートリポジトリをプルしてリベースするするので、
READMEを作成した際は「プル(リベース)」にしておくとファイルが消えずに済みます。
(リモートリポジトリ作成した際のREADME.mdファイルがプロジェクトフォルダ内に追加されます)
また、資格情報の入力を求められた際は、
リモートリポジトリを作成したGitHubのアカウントとパスワードを入力してください。

5.**UiPath Studioで確認**

以上で準備完了です。Studioを確認してGitの機能が使える確認。
フォルダの横に「↦」こんなマークが現れていたらGit連携されています。
![yazirusi.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/2d32de23-9047-f4f3-74a9-ebd0a2a16d5e.png)



### **直前のコミットとのDiff取得**

1. コミット済みの下記main.xamlに変更を加えてみます。
![sequence.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/2efc0946-346f-581e-a0d9-3b253ae46fe2.png)
2. 下記2点、ワークフローに変更を加えます。
 - 「1行を書き込み」アクティビティの追加。  
 - クリックアクティビティのプロパティ「クリックをシミュレート」を未設定→Trueに変更します。  
  

3. main.xamlを保存する  
4. プロジェクトパネル内のmain.xamlを右クリック>変更を表示![henkou.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/39e7c579-8c82-4867-09ec-31a655752f01.png)

表示されました！左側が直前コミットの状態、右側が現在の状態です。  

変更を確認する前にコミットしてしまった場合は「履歴を表示」でコミット間の差分確認ができます。
その場合、選択したコミットが右側、選択した直前のコミットが左側に表示されます。

### **直前のコミットまで戻す**
1. 変更を加えたファイルを右クリック>元に戻す  

2. 戻す対象を指定して、「元に戻す」  
![modosu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/07e4847d-50e8-1605-5e4a-5835c20c8be3.png)

これで直前のコミットの状態まで戻ります。

## **以降の動きについて**  
以降は改修→コミット→(プッシュ)→改修→…の流れでバージョンを積み重ねていく形になります。
場合によってはブランチを切って管理したりしますが、その辺りは省略します。

ワークフローや、同階層のフォルダに更新があった場合は
Studio左側の「プロジェクト」タブ内のxamlファイル、ワークフロー内フォルダ、
プロジェクトにカーソルを合わせ、右クリックで「コミット」を選択することで、
コミットメッセージを指定の上、「コミットしてプッシュする」もしくは「コミット」することができます。
変更がかかった箇所については、ファイルの横のマークが以下のように変わるので、非常にわかりやすいです。
![pen.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/c77fb5cd-2c08-0a27-5540-8fab4d1a72e2.png)

また、GitHub DesktopからGit Initを行った場合、
「GitHub Desktop」からでも変更のコミット、GitHubへのプッシュも可能です。





## 参考  
・UiPathJapan youtube
https://www.youtube.com/watch?v=F06_ENtuR2k

・UiPathドキュメント
https://docs.uipath.com/studio/lang-ja/v2019-fastTrack/docs/about-version-control
https://docs.uipath.com/studio/lang-ja/v2019-fastTrack/docs/git-version-control