A game about forced loneliness, made by TACStudios
1using Codice.CM.Common;
2using Unity.PlasticSCM.Editor.Tool;
3
4namespace Unity.PlasticSCM.Editor.Views.Changesets
5{
6 static class LaunchDiffOperations
7 {
8 internal static void DiffChangeset(
9 LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow,
10 LaunchTool.IProcessExecutor processExecutor,
11 RepositorySpec repSpec,
12 long changesetId,
13 bool isGluonMode)
14 {
15 if (changesetId == -1)
16 return;
17
18 string changesetFullSpec = GetChangesetFullSpec(
19 repSpec, changesetId);
20
21 LaunchTool.OpenChangesetDiffs(
22 showDownloadPlasticExeWindow,
23 processExecutor,
24 repSpec,
25 changesetFullSpec,
26 isGluonMode);
27 }
28
29 internal static void DiffChangeset(
30 LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow,
31 LaunchTool.IProcessExecutor processExecutor,
32 RepositorySpec repSpec,
33 ChangesetInfo changesetInfo,
34 bool isGluonMode)
35 {
36 if (changesetInfo == null)
37 return;
38
39 string changesetFullSpec = GetChangesetFullSpec(
40 repSpec, changesetInfo.ChangesetId);
41
42 LaunchTool.OpenChangesetDiffs(
43 showDownloadPlasticExeWindow,
44 processExecutor,
45 repSpec,
46 changesetFullSpec,
47 isGluonMode);
48 }
49
50 internal static void DiffSelectedChangesets(
51 LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow,
52 LaunchTool.IProcessExecutor processExecutor,
53 RepositorySpec repSpec,
54 ChangesetInfo cset1,
55 ChangesetInfo cset2,
56 bool isGluonMode)
57 {
58 ChangesetInfo srcChangesetInfo;
59 ChangesetInfo dstChangesetInfo;
60
61 GetSrcAndDstCangesets(
62 cset1,
63 cset2,
64 out srcChangesetInfo,
65 out dstChangesetInfo);
66
67 string srcChangesetFullSpec = GetChangesetFullSpec(
68 repSpec, srcChangesetInfo.ChangesetId);
69
70 string dstChangesetFullSpec = GetChangesetFullSpec(
71 repSpec, dstChangesetInfo.ChangesetId);
72
73 LaunchTool.OpenSelectedChangesetsDiffs(
74 showDownloadPlasticExeWindow,
75 processExecutor,
76 repSpec,
77 srcChangesetFullSpec,
78 dstChangesetFullSpec,
79 isGluonMode);
80 }
81
82 internal static void DiffBranch(
83 LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow,
84 LaunchTool.IProcessExecutor processExecutor,
85 RepositorySpec repSpec,
86 BranchInfo branchInfo,
87 bool isGluonMode)
88 {
89 if (branchInfo == null)
90 return;
91
92 string branchFullSpec = GetBranchFullSpec(
93 repSpec, branchInfo);
94
95 LaunchTool.OpenBranchDiffs(
96 showDownloadPlasticExeWindow,
97 processExecutor,
98 repSpec,
99 branchFullSpec,
100 isGluonMode);
101 }
102
103 internal static void DiffBranch(
104 LaunchTool.IShowDownloadPlasticExeWindow showDownloadPlasticExeWindow,
105 LaunchTool.IProcessExecutor processExecutor,
106 RepositorySpec repSpec,
107 ChangesetExtendedInfo changesetExtendedInfo,
108 bool isGluonMode)
109 {
110 if (changesetExtendedInfo == null)
111 return;
112
113 string branchFullSpec = GetBranchFullSpec(
114 repSpec, changesetExtendedInfo);
115
116 LaunchTool.OpenBranchDiffs(
117 showDownloadPlasticExeWindow,
118 processExecutor,
119 repSpec,
120 branchFullSpec,
121 isGluonMode);
122 }
123
124 static void GetSrcAndDstCangesets(
125 ChangesetInfo cset1,
126 ChangesetInfo cset2,
127 out ChangesetInfo srcChangesetInfo,
128 out ChangesetInfo dstChangesetInfo)
129 {
130 if (cset1.LocalTimeStamp < cset2.LocalTimeStamp)
131 {
132 srcChangesetInfo = cset1;
133 dstChangesetInfo = cset2;
134 return;
135 }
136
137 srcChangesetInfo = cset2;
138 dstChangesetInfo = cset1;
139 }
140
141 static string GetChangesetFullSpec(
142 RepositorySpec repSpec,
143 long changesetId)
144 {
145 return string.Format("cs:{0}@{1}",
146 changesetId, repSpec.ToString());
147 }
148
149 static string GetBranchFullSpec(
150 RepositorySpec repSpec,
151 BranchInfo branchInfo)
152 {
153 return string.Format("br:{0}@{1}",
154 branchInfo.BranchName,
155 repSpec.ToString());
156 }
157
158 static string GetBranchFullSpec(
159 RepositorySpec repSpec,
160 ChangesetExtendedInfo changesetExtendedInfo)
161 {
162 return string.Format("br:{0}@{1}",
163 changesetExtendedInfo.BranchName,
164 repSpec.ToString());
165 }
166 }
167}