Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 5833fbb

Browse files
Merge pull request #888 from github-for-unity/public-git-client
Public Git Client API
2 parents d2f898e + fa83edf commit 5833fbb

File tree

7 files changed

+367
-8
lines changed

7 files changed

+367
-8
lines changed

docs/using/quick-guide.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ These documents contain more details on how to use the GitHub for Unity plugin:
99
- **[Managing Branches](https://github.com/github-for-unity/Unity/blob/master/docs/using/managing-branches.md)**
1010
- **[Locking Files](https://github.com/github-for-unity/Unity/blob/master/docs/using/locking-files.md)**
1111
- **[Working with Changes](https://github.com/github-for-unity/Unity/blob/master/docs/using/working-with-changes.md)**
12+
- **[Using the Api](https://github.com/github-for-unity/Unity/blob/master/docs/using/using-the-api.md)**
1213

1314
## Table of Contents
1415

docs/using/using-the-api.md

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# Using the API
2+
3+
GitHub for Unity provides access to a git client to help users create their own tools to assist in their workflow.
4+
5+
Users can separate the user interface from the API by removing `GitHub.Unity.dll`. All other libraries are required by the API.
6+
7+
## Creating an instance of `GitClient`
8+
```cs
9+
var defaultEnvironment = new DefaultEnvironment();
10+
defaultEnvironment.Initialize(null, NPath.Default, NPath.Default, NPath.Default, Application.dataPath.ToNPath());
11+
12+
var processEnvironment = new ProcessEnvironment(defaultEnvironment);
13+
var processManager = new ProcessManager(defaultEnvironment, processEnvironment, TaskManager.Instance.Token);
14+
15+
var gitClient = new GitClient(defaultEnvironment, processManager, TaskManager.Instance.Token);
16+
```
17+
18+
## Full Example
19+
This example creates a window that has a single button which commits all changes.
20+
```cs
21+
using System;
22+
using System.Globalization;
23+
using GitHub.Unity;
24+
using UnityEditor;
25+
using UnityEngine;
26+
27+
public class CustomGitEditor : EditorWindow
28+
{
29+
[MenuItem("Window/Custom Git")]
30+
public static void ShowWindow()
31+
{
32+
EditorWindow.GetWindow(typeof(CustomGitEditor));
33+
}
34+
35+
[NonSerialized] private GitClient gitClient;
36+
37+
public void OnEnable()
38+
{
39+
InitGitClient();
40+
}
41+
42+
private void InitGitClient()
43+
{
44+
if (gitClient != null) return;
45+
46+
Debug.Log("Init GitClient");
47+
48+
var defaultEnvironment = new DefaultEnvironment();
49+
defaultEnvironment.Initialize(null, NPath.Default, NPath.Default,
50+
NPath.Default, Application.dataPath.ToNPath());
51+
52+
var processEnvironment = new ProcessEnvironment(defaultEnvironment);
53+
var processManager = new ProcessManager(defaultEnvironment, processEnvironment, TaskManager.Instance.Token);
54+
55+
gitClient = new GitClient(defaultEnvironment, processManager, TaskManager.Instance.Token);
56+
}
57+
58+
void OnGUI()
59+
{
60+
GUILayout.Label("Custom Git Window", EditorStyles.boldLabel);
61+
62+
if (GUILayout.Button("Commit Stuff"))
63+
{
64+
var message = DateTime.Now.ToString(CultureInfo.InvariantCulture);
65+
var body = string.Empty;
66+
67+
gitClient.AddAll()
68+
.Then(gitClient.Commit(message, body))
69+
.Start();
70+
}
71+
}
72+
}
73+
```
74+
75+

0 commit comments

Comments
 (0)