Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Conversation

@shana
Copy link
Contributor

@shana shana commented Oct 26, 2017

It's much easier for everyone if the build scripts are out in the public so everyone can use them, and all CI systems use the same scripts so that things aren't missed.

This:

  • Adds a public key to the repo, with a different name from what we suggested before so it doesn't conflict with any existing keys user may have locally
  • Adds all build scripts to the scripts directory
  • Sets the version of the vsix to a timestamp when building locally
  • Sets the version of DLLs and vsix when building in CI, but doesn't commit them
  • Cleans up csproj files so all have the same CA and warnings settings
  • Adds solution configurations for different variations of building with CA enabled and disabling vsix creation/deployment
    • Debug now builds with warnings as errors enabled but CA disabled
  • Builds in CI from our own PR branches and from master produced ready-to-release signed vsix packages as artifacts
  • Deployments are enabled in AppVeyor to S3 and GitHub releases (go to a branch with artifacts and click Deploy to deploy them). S3 deploys become available in https://ghfvs-installer.github.com/releases/X.X.X.X/[name of vsix/md5/manifest file] and https://ghfvs-installer.github.com/releases/ghfvs-X.X.X.X.zip

@shana shana force-pushed the shana/build-system-overhaul branch from f0c11f9 to d0ebe13 Compare October 28, 2017 17:21
Copy link
Contributor

@grokys grokys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments, but also I'm getting:

error CS0006: Metadata file 'D:\projects\VisualStudio\submodules\reactiveui\ReactiveUI.Testing\bin\Debug\Net45\ReactiveUI.Testing.dll' could not be found

This assembly seems to be referenced from UnitTests but we're not actually building it now. It looks like the reference can safely be removed however.

{
public string DiffHunk { get; set; }
public int LineNumber { get; set; }
public event EventHandler Disposed = delegate { };
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This member can just be removed: it's not implementing an interface or anything.


if (disposing)
{
linesChanged.Dispose();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A PullRequestSessionFile can be a shared instance between multiple clients, disposing of linesChanged here would unsubscribe all clients. IMO this class shouldn't be disposable, or at least the Dispose method shouldn't dispose linesChanged as this will break things.


public void Dispose()
{
Disposed?.Invoke(this, EventArgs.Empty);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think = delegate { }; is needed as Disposed is actually called.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All use of delegate { } gone now.

public event EventHandler IsDirtyChanged;
public event EventHandler IsReadOnlyChanged;
public event EventHandler<RecreateContentEventArgs> RecreateContent;
public event EventHandler IsDirtyChanged = delegate { }; // IsDirty is always false.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd prefer these unused events to be declared as explicit interface implementations with empty add and remove blocks, even though it's a bit more verbose - this syntax doesn't make clear to me what is happening...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed. It's concise, but not exactly clear!

/// repository on disk and in the editor.
/// </remarks>
public class PullRequestSession : ReactiveObject, IPullRequestSession
public class PullRequestSession : ReactiveObject, IPullRequestSession, IDisposable
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, this is a shared object so shouldn't be getting disposed.


var msg = string.Format(CultureInfo.CurrentUICulture, Constants.Notification_RepoCreated, newrepo.Name, newrepo.CloneUrl);
msg += " " + string.Format(CultureInfo.CurrentUICulture, Constants.Notification_CreateNewProject, newrepo.LocalPath);
var msg = String.Format(CultureInfo.CurrentCulture, Constants.Notification_RepoCreated, newrepo.Name, newrepo.CloneUrl);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: the capitalization of string probably shouldn't have been changed here.

@jcansdale jcansdale force-pushed the shana/build-system-overhaul branch from 0a56e6d to a1ce93d Compare November 2, 2017 13:08
@jcansdale
Copy link
Collaborator

I've fixed all but one of the MSB3277: Found conflicts between different versions of the same dependent assembly warnings.

warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved.
These reference conflicts are listed in the build log when log verbosity is set to detailed.
[C:\source\github.com\github\VisualStudio\src\GitHub.VisualStudio\GitHub.VisualStudio.csproj]

Unfortunately I'm not sure there's anything we can do about this one, due to the way VSIX packaging works. I think the GitHub.VisualStudio project does need to reference all the other projects. 😢

@jcansdale jcansdale closed this Nov 2, 2017
@shana shana reopened this Nov 2, 2017
Copy link
Contributor

@grokys grokys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good @jcansdale . Just one q for @shana.

scripts\Run-Nunit.ps1 TrackingCollectionTests 180 Release -AppVeyor
scripts\Run-Xunit.ps1 UnitTests 180 Release -AppVeyor
- ps: scripts\test.ps1 -AppVeyor
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, we just need to consolidate all the tests in one place so we can have AppVeyor run them with the correct categories ignored. We also need to consolidate the test categories to be the same for everyone.

@shana shana merged commit e0e5ded into master Nov 3, 2017
@shana shana deleted the shana/build-system-overhaul branch November 3, 2017 05:54
shana added a commit that referenced this pull request Nov 15, 2017
…-overhaul

Backport of #1282 Build system overhaul to the 2.3.4 tree
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants