The perfect Git Graph GUI

Updated: 16 December 2024

I’m kicking-off an open-source project to create a Git Graph GUI tool, which has a feature set and functionality perfect for my requirements. If you would like to assist, please email me and / or create a pull request.

My project is Sourcegit Stripdown, a fork of https://github.com/sourcegit-scm/sourcegit. The objective is to remove from the upstream all the functionality which can be performed from the command line and leave only:

  1. A git commit graph.
  2. A diff view.

The project uses the .NET Avalonia UI framework and the C# programming language.

Run specific scenarios

Updated: 04 February 2023

SpecFlow converts tags in feature files to test case categories.

For xUnit

dotnet test --filter Category=done
dotnet test --filter "Category=us123 & Category=done"
dotnet test --filter "Category=done | Category=automated"
@US123
Feature: Breakfast

@done @important
Scenario: Eating cucumbers
  Given there are 12 cucumbers
  When I eat 5 cucumbers
  Then I should have 7 cucumbers

@automated
Scenario: Use all the sugar
  Given there is some sugar in the cup
  When I put all the sugar to my coffee
  Then the cup is empty

https://docs.specflow.org/projects/specflow/en/latest/Execution/Executing-Specific-Scenarios.html

.NET

Updated: 16 January 2025

.NET is an open source developer platform (i.e. the Languages & Libraries) for building different types of apps. The supported languages are C#, Visual Basic and F#.

Microsoft .NET and .NET Core Release History

Target platforms are:

  • .NET Core which runs on Windows, Linux and macOS.
  • .NET Framework for websites, services and apps on Windows only.
  • Xamarin / Mono, a .NET for mobile e.g. iOS devices, Apple Watch/TV Android.

https://docs.microsoft.com/dotnet
https://aka.ms/dotnethelloworld

The Host

A container which offers built-in services:

  • Dependency injection – a technique for achieving Inversion of Control between classes and their dependencies.
  • Configuration
  • Logging
  • Options pattern
  • Host Services

.NET 6 offers Generic DefaultHost which can be configured for the application use cases.

Hosted Service

A service which performs work in the background. Any reference type object which implements IHostedService is a background / hosted / worker service.

DI Service Container

Class dependencies can be registered in a service container.

.NET provides a built-in service container, IServiceProvider. Services are typically registered at the app’s start-up and appended to an IServiceCollection. Once all services are added BuildServiceProvider is used to create the service container.

Dependency Injection injects the service into the constructor of the class where it’s needed. The framework takes on the responsibility of creating an instance of the dependency and disposing of it when it’s no longer needed.

.NET CLI

Updated: 02 February 2025

sln

Add the PrimeService.Tests project to the current solution file

dotnet sln add ./PrimeService.Tests/PrimeService.Tests.csproj

add

Add a reference to lib.csproj inside app.csproj

dotnet add app/app.csproj reference lib/lib.csproj

Add or updates a package reference in a project file

dotnet add package docopt.net

new

Create a new .NET project based on the console template.

dotnet new console --name our_project

Create a Class Library project

dotnet new classlib --name MyClassLib

Create a NUnit 3 Test Project

dotnet new nunit

run

Build and test the Release version of a console application

dotnet run --configuration Release

test

Run the tests in the project in the current directory

dotnet test

clean

Clean up the output of the previous build. Both intermediate (obj) and final output (bin) folders are cleaned.

dotnet clean

restore

Restores the dependencies and tools for a project i.e. external libraries in NuGet packages. All dependencies become available in a local cache and can be used by the .NET CLI to build and run the application.

dotnet restore

dotnet

List installed Software Developer Kits

dotnet --list-sdks

List installed runtimes

dotnet --list-runtimes

build

Build a project and its dependencies using Release configuration

dotnet build --configuration Release

Build the project and its dependencies into a set of binaries.
The binaries include the project’s code in Intermediate Language (IL) files with a .dll extension.

dotnet build

publish

Publishes the application and its dependencies to a folder for deployment to a hosting system.

dotnet publish

Attempt to target Linux

dotnet publish --runtime linux-x64 -p:PublishSingleFile=true --self-contained false

format

Check for violations of rules in an .editorconfig file

dotnet format --verify-no-changes