Skip to content

Commit c974c43

Browse files
authored
Add branch dropdown & fix default branch value (#34) (#35)
1 parent 788e596 commit c974c43

File tree

6 files changed

+420
-394
lines changed

6 files changed

+420
-394
lines changed

src/GitExtensions.GerritPlugin/FormGerritDownload.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ private async Task<JObject> LoadReviewInfoAsync()
189189
_NO_TRANSLATE_Change.Text),
190190
fetchUrl,
191191
_currentBranchRemote,
192-
stdIn: null)
192+
null)
193193
.ConfigureAwait(false);
194194

195195
foreach (string line in change.Split('\n'))

src/GitExtensions.GerritPlugin/FormGerritPublish.Designer.cs

Lines changed: 259 additions & 256 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/GitExtensions.GerritPlugin/FormGerritPublish.cs

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using GitUIPluginInterfaces;
1111
using JetBrains.Annotations;
1212
using ResourceManager;
13-
13+
1414
namespace GitExtensions.GerritPlugin
1515
{
1616
public partial class FormGerritPublish : FormGerritBase
@@ -25,7 +25,7 @@ public partial class FormGerritPublish : FormGerritBase
2525
#endregion
2626

2727
private string _currentBranchRemote;
28-
private GerritCapabilities _capabilities;
28+
private readonly GerritCapabilities _capabilities;
2929

3030
public FormGerritPublish(IGitUICommands uiCommand, GerritCapabilities capabilities)
3131
: base(uiCommand)
@@ -65,9 +65,10 @@ private static ArgumentString PushCmd(string remote, string toBranch)
6565

6666
private bool PublishChange(IWin32Window owner)
6767
{
68+
string remote = _NO_TRANSLATE_Remotes.Text.Trim();
6869
string branch = _NO_TRANSLATE_Branch.Text.Trim();
6970

70-
if (string.IsNullOrEmpty(_NO_TRANSLATE_Remotes.Text))
71+
if (string.IsNullOrEmpty(remote))
7172
{
7273
MessageBox.Show(owner, _selectRemote.Text, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
7374
return false;
@@ -79,7 +80,7 @@ private bool PublishChange(IWin32Window owner)
7980
return false;
8081
}
8182

82-
GerritUtil.StartAgent(owner, Module, _NO_TRANSLATE_Remotes.Text);
83+
GerritUtil.StartAgent(owner, Module, remote);
8384

8485
var builder = _capabilities.NewBuilder()
8586
.WithReviewers(_NO_TRANSLATE_Reviewers.Text)
@@ -90,10 +91,10 @@ private bool PublishChange(IWin32Window owner)
9091

9192
var pushCommand = UICommands.CreateRemoteCommand();
9293
pushCommand.CommandText = PushCmd(
93-
_NO_TRANSLATE_Remotes.Text,
94+
remote,
9495
builder.Build(branch));
9596

96-
pushCommand.Remote = _NO_TRANSLATE_Remotes.Text;
97+
pushCommand.Remote = remote;
9798
pushCommand.Title = _publishCaption.Text;
9899

99100
pushCommand.Execute();
@@ -115,7 +116,8 @@ private bool PublishChange(IWin32Window owner)
115116
.SubstringUntil(' ');
116117
break;
117118
}
118-
else if (line.Contains("New Changes"))
119+
120+
if (line.Contains("New Changes"))
119121
{
120122
hadNewChanges = true;
121123
}
@@ -156,7 +158,7 @@ private string GetBranchName(string targetBranch)
156158
{
157159
string branch = Module.GetSelectedBranch();
158160

159-
if (branch.StartsWith("(no"))
161+
if (string.IsNullOrWhiteSpace(branch) || branch.StartsWith("(no "))
160162
{
161163
return targetBranch;
162164
}
@@ -167,14 +169,18 @@ private string GetBranchName(string targetBranch)
167169
private void FormGerritPublishLoad(object sender, EventArgs e)
168170
{
169171
_NO_TRANSLATE_Remotes.DataSource = Module.GetRemoteNames();
170-
171172
_currentBranchRemote = Settings.DefaultRemote;
172173

173174
var remotes = (IList<string>)_NO_TRANSLATE_Remotes.DataSource;
174-
int i = remotes.IndexOf(_currentBranchRemote);
175-
_NO_TRANSLATE_Remotes.SelectedIndex = i >= 0 ? i : 0;
175+
int remoteIndex = remotes.IndexOf(_currentBranchRemote);
176+
_NO_TRANSLATE_Remotes.SelectedIndex = remoteIndex >= 0 ? remoteIndex : 0;
177+
178+
_NO_TRANSLATE_Branch.DataSource = Module.GetRefs(false).Select(branch => branch.LocalName).ToList();
179+
_NO_TRANSLATE_Branch.Text = GetBranchName(Settings.DefaultBranch);
176180

177-
_NO_TRANSLATE_Branch.Text = Settings.DefaultBranch;
181+
var branches = (IList<string>)_NO_TRANSLATE_Branch.DataSource;
182+
int branchIndex = branches.IndexOf(_NO_TRANSLATE_Branch.Text);
183+
_NO_TRANSLATE_Branch.SelectedIndex = branchIndex >= 0 ? branchIndex : 0;
178184

179185
if (!string.IsNullOrEmpty(_NO_TRANSLATE_Branch.Text))
180186
{
Lines changed: 119 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,120 @@
1-
<?xml version="1.0" encoding="utf-8"?>
2-
<root>
3-
<!--
4-
Microsoft ResX Schema
5-
6-
Version 2.0
7-
8-
The primary goals of this format is to allow a simple XML format
9-
that is mostly human readable. The generation and parsing of the
10-
various data types are done through the TypeConverter classes
11-
associated with the data types.
12-
13-
Example:
14-
15-
... ado.net/XML headers & schema ...
16-
<resheader name="resmimetype">text/microsoft-resx</resheader>
17-
<resheader name="version">2.0</resheader>
18-
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19-
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20-
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21-
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22-
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23-
<value>[base64 mime encoded serialized .NET Framework object]</value>
24-
</data>
25-
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26-
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27-
<comment>This is a comment</comment>
28-
</data>
29-
30-
There are any number of "resheader" rows that contain simple
31-
name/value pairs.
32-
33-
Each data row contains a name, and value. The row also contains a
34-
type or mimetype. Type corresponds to a .NET class that support
35-
text/value conversion through the TypeConverter architecture.
36-
Classes that don't support this are serialized and stored with the
37-
mimetype set.
38-
39-
The mimetype is used for serialized objects, and tells the
40-
ResXResourceReader how to depersist the object. This is currently not
41-
extensible. For a given mimetype the value must be set accordingly:
42-
43-
Note - application/x-microsoft.net.object.binary.base64 is the format
44-
that the ResXResourceWriter will generate, however the reader can
45-
read any of the formats listed below.
46-
47-
mimetype: application/x-microsoft.net.object.binary.base64
48-
value : The object must be serialized with
49-
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50-
: and then encoded with base64 encoding.
51-
52-
mimetype: application/x-microsoft.net.object.soap.base64
53-
value : The object must be serialized with
54-
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55-
: and then encoded with base64 encoding.
56-
57-
mimetype: application/x-microsoft.net.object.bytearray.base64
58-
value : The object must be serialized into a byte array
59-
: using a System.ComponentModel.TypeConverter
60-
: and then encoded with base64 encoding.
61-
-->
62-
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63-
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64-
<xsd:element name="root" msdata:IsDataSet="true">
65-
<xsd:complexType>
66-
<xsd:choice maxOccurs="unbounded">
67-
<xsd:element name="metadata">
68-
<xsd:complexType>
69-
<xsd:sequence>
70-
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71-
</xsd:sequence>
72-
<xsd:attribute name="name" use="required" type="xsd:string" />
73-
<xsd:attribute name="type" type="xsd:string" />
74-
<xsd:attribute name="mimetype" type="xsd:string" />
75-
<xsd:attribute ref="xml:space" />
76-
</xsd:complexType>
77-
</xsd:element>
78-
<xsd:element name="assembly">
79-
<xsd:complexType>
80-
<xsd:attribute name="alias" type="xsd:string" />
81-
<xsd:attribute name="name" type="xsd:string" />
82-
</xsd:complexType>
83-
</xsd:element>
84-
<xsd:element name="data">
85-
<xsd:complexType>
86-
<xsd:sequence>
87-
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88-
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89-
</xsd:sequence>
90-
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91-
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92-
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93-
<xsd:attribute ref="xml:space" />
94-
</xsd:complexType>
95-
</xsd:element>
96-
<xsd:element name="resheader">
97-
<xsd:complexType>
98-
<xsd:sequence>
99-
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100-
</xsd:sequence>
101-
<xsd:attribute name="name" type="xsd:string" use="required" />
102-
</xsd:complexType>
103-
</xsd:element>
104-
</xsd:choice>
105-
</xsd:complexType>
106-
</xsd:element>
107-
</xsd:schema>
108-
<resheader name="resmimetype">
109-
<value>text/microsoft-resx</value>
110-
</resheader>
111-
<resheader name="version">
112-
<value>2.0</value>
113-
</resheader>
114-
<resheader name="reader">
115-
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116-
</resheader>
117-
<resheader name="writer">
118-
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119-
</resheader>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120120
</root>

src/GitExtensions.GerritPlugin/GitExtensions.GerritPlugin.csproj

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Reference Include="System.ComponentModel.Composition" />
99
<Reference Include="System.Windows.Forms" />
1010
</ItemGroup>
11-
11+
1212
<ItemGroup>
1313
<PackageReference Include="JetBrains.Annotations" Version="2018.2.1">
1414
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
@@ -27,7 +27,7 @@
2727
<ItemGroup>
2828
<PackageReference Include="GitExtensions.Extensibility" Version="0.1.*" />
2929
</ItemGroup>
30-
30+
3131
<ItemGroup>
3232
<!-- References to Git Extensions' DLLs -->
3333
<Reference Include="GitCommands">
@@ -54,8 +54,8 @@
5454
<None Include="Resources\GerritPublish.png" />
5555
<None Include="Resources\IconGerrit.png" />
5656
</ItemGroup>
57-
58-
57+
58+
5959
<!-- Pack as .nupkg with dependency on GitExtensions.Extensibility -->
6060
<PropertyGroup>
6161
<NuspecFile>$(MSBuildThisFileDirectory)$(MSBuildProjectName).nuspec</NuspecFile>
@@ -68,6 +68,24 @@
6868
<AutoGen>True</AutoGen>
6969
<DependentUpon>Resources.resx</DependentUpon>
7070
</Compile>
71+
<Compile Update="FormGerritBase.cs">
72+
<SubType>Form</SubType>
73+
</Compile>
74+
<Compile Update="FormGerritChangeSubmitted.cs">
75+
<SubType>Form</SubType>
76+
</Compile>
77+
<Compile Update="FormGerritDownload.cs">
78+
<SubType>Form</SubType>
79+
</Compile>
80+
<Compile Update="FormGerritPublish.cs">
81+
<SubType>Form</SubType>
82+
</Compile>
83+
<Compile Update="FormGitReview.cs">
84+
<SubType>Form</SubType>
85+
</Compile>
86+
<Compile Update="FormPluginInformation.cs">
87+
<SubType>Form</SubType>
88+
</Compile>
7189
</ItemGroup>
7290

7391
<ItemGroup>

0 commit comments

Comments
 (0)