An open API service indexing awesome lists of open source software.

https://github.com/nullvariant/nullvariant-vscode-extensions

VS Code extensions monorepo - includes git-id-switcher for managing multiple Git identities
https://github.com/nullvariant/nullvariant-vscode-extensions

account-switcher git-config git-identity gpg-key i18n identity-management multi-account open-source profile-switcher ssh-key submodule visual-studio-code visual-studio-code-extension vscode vscode-extension

Last synced: about 12 hours ago
JSON representation

VS Code extensions monorepo - includes git-id-switcher for managing multiple Git identities

Awesome Lists containing this project

README

          

# nullvariant-vscode-extensions

[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/nullvariant/nullvariant-vscode-extensions/badge)](https://securityscorecards.dev/viewer/?uri=github.com/nullvariant/nullvariant-vscode-extensions)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/11709/badge)](https://www.bestpractices.dev/projects/11709)
[![SLSA 3](https://slsa.dev/images/gh-badge-level3.svg)](https://slsa.dev/)
[![Security](https://github.com/nullvariant/nullvariant-vscode-extensions/actions/workflows/security.yml/badge.svg)](https://github.com/nullvariant/nullvariant-vscode-extensions/actions/workflows/security.yml)
[![CI](https://github.com/nullvariant/nullvariant-vscode-extensions/actions/workflows/ci.yml/badge.svg)](https://github.com/nullvariant/nullvariant-vscode-extensions/actions/workflows/ci.yml)
[![Platform](https://img.shields.io/badge/%20-Win%20%7C%20Mac%20%7C%20Linux-blue?labelColor=555&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0yMSAySDNjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoN3YySDh2Mmg4di0yaC0ydi0yaDdjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptMCAxNEgzVjRoMTh2MTJ6Ii8+PC9zdmc+)](https://github.com/nullvariant/nullvariant-vscode-extensions/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/nullvariant/nullvariant-vscode-extensions/graph/badge.svg)](https://codecov.io/gh/nullvariant/nullvariant-vscode-extensions)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=nullvariant_nullvariant-vscode-extensions&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=nullvariant_nullvariant-vscode-extensions)
[![Harden-Runner](https://img.shields.io/badge/Harden--Runner-enabled-7037F5)](https://github.com/step-security/harden-runner)

VS Code extensions by [Null;Variant](https://github.com/nullvariant).

## Extensions

### Git ID Switcher



Git ID Switcher


Switch between multiple Git identities with one click. Manage multiple GitHub accounts, SSH keys, GPG signing, and automatically apply identity to Git Submodules.



VS Code Marketplace
Open VSX Registry
License: MIT
Karesansui Architecture


26 Languages 🇺🇸 🇯🇵 🇨🇳 🇹🇼 🇰🇷 🇩🇪 🇫🇷 🇪🇸 🇧🇷 🇮🇹 🇷🇺 🇵🇱 🇹🇷 🇨🇿 🇭🇺 🇧🇬 🇺🇦 🌍 🌺 🐻 🐉 🖖 🐱 🏴‍☠️ 🎭



📖 Documentation | 🤝 Contributing | 📦 Marketplace | 📦 Open VSX


Git ID Switcher Demo

## Quick Start for Developers

Get started in 5 steps:

```bash
# 1. Clone
git clone https://github.com/nullvariant/nullvariant-vscode-extensions.git
cd nullvariant-vscode-extensions

# 2. Install dependencies (from repository root)
npm install

# 3. Compile
npm run compile:all

# 4. Run tests
npm run test:all

# 5. Start watch mode for development
npm run watch:all
```

For linting: `npm run lint:all`

## Extension Initialization Flow

```mermaid
flowchart TD
A[Extension Activated] --> B{Workspace Trusted?}
B -->|No| C[Restricted Mode]
B -->|Yes| D[initializeState]
D --> E{Saved Identity?}
E -->|Yes| I[Apply Identity]
E -->|No| F{Detect from Git Config?}
F -->|Yes| I
F -->|No| G{Detect from SSH Agent?}
G -->|Yes| I
G -->|No| H[No Identity]
I --> J[Update Status Bar]
H --> J
J --> K[Ready]
```

## Development

### Prerequisites

- Node.js 20+

### Working on an extension

```bash
cd extensions/git-id-switcher

# Install dependencies
npm install

# Compile
npm run compile

# Watch mode
npm run watch

# Package as VSIX
npm run package
```

### Testing locally

#### Manual Testing

1. Open the extension folder in VS Code
2. Press `F5` to launch Extension Development Host
3. Test the extension in the new window

#### Unit Tests

```bash
cd extensions/git-id-switcher
npm run test
```

#### E2E Tests

E2E tests run in an actual VS Code environment using `@vscode/test-electron`:

```bash
cd extensions/git-id-switcher
npm run test:e2e
```

> **Note**: On first run, VS Code will be downloaded automatically (~100MB). Subsequent runs use the cached version.

### Git Hooks Setup

This repository uses custom git hooks for release safety. After cloning, run:

```bash
git config core.hooksPath .githooks
```

This enables the pre-push hook that prevents pushing version bumps without release tags.

## Repository Structure

```
nullvariant-vscode-extensions/
├── extensions/
│ └── git-id-switcher/
├── .github/workflows/
│ ├── ci.yml
│ └── publish.yml
├── .githooks/
│ └── pre-push
├── LICENSE
└── README.md
```

## Publishing (Maintainers Only)

> **Note**: The `main` branch is protected. All changes must go through a Pull Request.

Extensions are automatically published when a release tag is pushed:

1. Ensure all changes are merged to `main` via Pull Request
2. Create and push a release tag from the latest `main`:

```bash
git checkout main
git pull origin main
git tag git-id-switcher-v1.0.0
git push origin git-id-switcher-v1.0.0
```

The [publish workflow](.github/workflows/publish.yml) will automatically build and publish the extension to VS Code Marketplace and Open VSX.

## License

MIT