GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - ktsu-dev/ProjectDirector: A .NET desktop application for managing and comparing many Git repositories side by side. Scans a local development directory, browses GitHub and Azure DevOps remotes, fetches and pulls in bulk, diffs individual files across repositories, and propagates a chosen version of a file to the others.

BranchesTags
Open more actions menu

Latest commit

 

History

1,405 Commits
1,405 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
ProjectDirector.Test
ProjectDirector.Test
 
 
ProjectDirector
ProjectDirector
 
 
docs/gallery
docs/gallery
 
 
tests/ProjectDirector.UITests
tests/ProjectDirector.UITests
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.mailmap
.mailmap
 
 
.runsettings
.runsettings
 
 
AUTHORS.md
AUTHORS.md
 
 
AUTHORS.url
AUTHORS.url
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
COPYRIGHT.md
COPYRIGHT.md
 
 
DESCRIPTION.md
DESCRIPTION.md
 
 
Directory.Packages.props
Directory.Packages.props
 
 
LATEST_CHANGELOG.md
LATEST_CHANGELOG.md
 
 
LICENSE.md
LICENSE.md
 
 
PROJECT_URL.url
PROJECT_URL.url
 
 
ProjectDirector.sln
ProjectDirector.sln
 
 
README.md
README.md
 
 
TAGS.md
TAGS.md
 
 
VERSION.md
VERSION.md
 
 
global.json
global.json
 
 
icon.png
icon.png
 
 

Repository files navigation

ProjectDirector

A desktop application for managing and comparing many Git repositories side by side.

License GitHub commit activity GitHub contributors GitHub Actions Workflow Status

Introduction

ProjectDirector is a .NET desktop application for working across a large collection of related Git repositories at once. It scans a local development directory, pairs what it finds with your remote repositories on GitHub and Azure DevOps, and gives you a single window from which to fetch, pull, diff, and propagate changes.

It exists for the case where the same file — a workflow, an editorconfig, a shared props file — drifts across dozens of sibling repositories, and you want to see the differences and push one canonical version out to the rest.

Features

  • Repository Discovery: Scans a configured development directory for local clones and lists them alongside your remote repositories.
  • Multi-Provider Remotes: Browses repositories from GitHub (via Octokit) and Azure DevOps.
  • Bulk Git Operations: Fetch and pull across many repositories, with per-repository status and timing.
  • Cross-Repository Diffing: Compares a given file across every repository that contains it and shows a line-by-line diff.
  • File Propagation: Copies a chosen version of a file out to the other repositories that have it, so a shared file can be reconciled in one step.
  • Three-Panel Layout: Repository list on the left, repository detail and diff view on the right, and an operation log along the bottom.
  • Persistent State: Development directory, credentials, repository cache, and UI layout are saved between sessions.

The app gallery shows the main views and dialogs as the application draws them today.

Two copies of a file compared side by side

Requirements

  • .NET 9.0
  • Windows (the application uses a Dear ImGui desktop window)

Installation

git clone https://github.com/ktsu-dev/ProjectDirector.git
cd ProjectDirector
dotnet build

Usage

# Run the application
dotnet run

# Publish a distributable build
dotnet publish --configuration Release --output ./staging

On first run, set the development directory that ProjectDirector should scan and add the GitHub owners you want listed (File > Add New GitHub Owner). Give an owner a personal access token with File > Set GitHub Owner Token if its repositories are private or you want a higher rate limit.

The development directory, the owner list and the repository cache are persisted to the application data folder. Tokens are not: they go to the operating system's secret store — Windows Credential Manager, macOS Keychain, or libsecret (Secret Service) on Linux. A token saved by an earlier version is moved there on the next start and emptied where it was, so nothing needs re-entering.

Typical Workflow

  1. Point ProjectDirector at your development directory.
  2. Let it scan for local clones and fetch the remote repository list.
  3. Select a repository to see its details, or select a file to diff it across every repository that has one.
  4. Choose the version you want to keep and propagate it to the others.
  5. Review the log panel, then commit and push from your normal Git tooling.

Architecture

Component Responsibility
ProjectDirector Main application class: ImGui loop, three-panel layout, and the fetch/pull/diff/propagate operations.
ProjectDirectorOptions Application state persisted as JSON — dev directory, configured GitHub owners, repository cache, and UI state. Deliberately holds no tokens.
TokenStorage GitHub tokens in the OS secret store, keyed by a persona derived from the login or owner name, plus the one-time migration off the old plaintext fields.
GitRepository Abstract repository model with polymorphic JSON serialization.
GitHubRepository / AzureDevOpsRepository Provider-specific repository implementations.
PopupPropagateFile Modal that drives the file propagation flow.
DictionaryOfHashSets Helper collection for grouping repositories by file hash.

Key Dependencies

Package Used for
ktsu.RunCommand Runs the git command line — clone, fetch, pull, status
Octokit GitHub API access
DiffPlex Line-by-line file diffing
ktsu.ImGuiApp Application shell and window management
ktsu.AppDataStorage Persistent options storage
ktsu.Semantics Type-safe paths and identifiers

Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

License

This project is licensed under the MIT License. See the LICENSE.md file for details.

About

A .NET desktop application for managing and comparing many Git repositories side by side. Scans a local development directory, browses GitHub and Azure DevOps remotes, fetches and pulls in bulk, diffs individual files across repositories, and propagates a chosen version of a file to the others.

Topics

azure-devopsbulk-gitdear-imguidesktop-applicationdiffdiffplexdotnetfetchfile-propagationgitgithubimguilibgit2sharpmulti-repositoryoctokitproject-directorproject-managementpullrepository-managementsolution-management

Resources

Readme
MIT license
Activity
Custom properties

Stars

0 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.