πŸ—‚οΈ A simple, opinionated, tool, written in Rust, for declaratively managing Git repos on your machine.

Related tags

Cryptography git rust nix
Overview

gitrs πŸ—‚οΈ

A simple, opinionated, tool, written in Rust, for declaretively managing Git repos on your machine.

"simple" - limited in what it supports. For example, won't support running commands against repos. "opinionated" - similar to Go and the old $GOPATH is how repos are stored.

Usage

Global arguments

  • --root <path> - specify $GITRS_ROOT. Defaults to $HOME/src.

Subcommands

  • add <url> - adds repo to the config file.
  • remove <url> - remove repo from the config file.
  • sync - reads the config file and adds or removes repos from the filesystem to match the state of the config.

$GITRS_ROOT/.gitrs.yaml config file

metadata:
 version: v1beta
 root: /home/user/src
 last_sync: <timestamp>
repos:
- name: github.com/mccurdyc/gitrs
  pin: <true|default:false>
  sha: <sha>

Design goals

  • Do one thing well: clone, update or remove repos from the filesystem.
    • Won't support running commands against cloned repos.
  • Only supports SSH cloning, similar to Go.
  • Opinionated file structure. For example, $GOPATH. But you can specify a GITRS_ROOT.
  • You could have multiple "roots" for different uses. For example, $HOME/{work,personal} with separate gitrs configs.
  • Have a single, config file for declaring the repos to manage.
  • The config file is the source of truth for all repos cloned to your machine.
    • If you run add, it adds the repo to the config file.
    • If you run remove, it removes the repo from the config file.
    • Then, sync clones the repo and/or updates the filesystem to reflect the state of the config file.
  • Changes to the config file could trigger a command to run.
    • Maybe a watch or something.
  • Config file (thinking YAML)
    • Supports comments
    • If you don't want to use gitrs you can parse for use in another tool
    • A source of truth for repos your team (at work) needs

TODO

  • (TODO) lockfile / statefile.
  • (TODO) add --pin [<SHA>] pinning / skipping a repo from being checked for updates.
  • (TODO) sync --restore <FILE> - restore from a gitrs lockfile.
  • (TODO) sync --clean - only remove repositories, doesn't update or clone.
  • (CONSIDER) sync --archive - archives repositories, to $GITRS_ROOT/.archived.
  • (TODO) watch - watches the config file for updates and syncs the filesystem.
  • (TODO) list - lists repos in the config file.
  • (TODO) status - checks to see if cloned repos, need removed and/or if remote updates need fetched.
  • (TODO) Nix package

Inspiration

See similar projects.

LICENSE

See LICENSE.md.

You might also like...
A simple and secure rust command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm.

Secret Keeper A simple and secure command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm. Built wit

VSDB is a 'Git' in the form of a KV database.

VSDB VSDB is a 'Git' in the form of a KV database. Based on the powerful version control function of VSDB, you can easily give your data structure the

Authenticate a tarball through a signed tag in a git repository (with reproducible builds)

auth-tarball-from-git Authenticate a tarball through a signed tag in a git repository (with reproducible builds). The signed git tag contains a hash o

Harness the power of signify(1) to sign arbitrary git objects

git-signify A tool to sign arbitrary objects in a git repository. Generating keys Signing keys can be generated with signify, from the OpenBSD project

A simple self-contained CLI tool that makes it easy to efficiently encrypt/decrypt your files.

cryptic A simple self-contained CLI tool that makes it easy to efficiently encrypt/decrypt your files. Contents Features Building Usage License Featur

A low-level assembly language for the Ethereum Virtual Machine built in blazing-fast pure rust.
A low-level assembly language for the Ethereum Virtual Machine built in blazing-fast pure rust.

huff-rs β€’ huff-rs is a Huff compiler built in rust. What is a Huff? Huff is a low-level programming language designed for developing highly optimized

Rust based Virtual Machine on Avalanche that implements Bulletproof ZK Proofs.

BulletproofVM Rust based Virtual Machine on Avalanche that implements Bulletproof ZK Proofs. Zero-Knowledge Virtual Machine This is a virtual machine

Ethereum key tool - Lightweight CLI tool to deal with ETH keys written in rust

ekt - Etherum Key Tool ekt is a lightweight tool to generate ethereum keys and addresses. Installation Either clone it and run it with cargo or instal

BTM - Blockchain Time Machine.

BTM Blockchain Time Machine. BTM is an incremental data backup mechanism that does not require downtime. Why would you need this? btm will give you th

Comments
  • other related art: git-repo-manager

    other related art: git-repo-manager

    Hi,

    Since I saw you list some other existing art, I thought you might be interested in seeing/evaluating

    git-repo-manager: https://github.com/hakoerber/git-repo-manager

    opened by colemickens 1
Owner
Colton J. McCurdy
Software is just a bunch of brain puzzles; that's what makes it fun. Make people smile and be optimistic. He/Him
Colton J. McCurdy
CLI tool for managing your 2FA authentication codes written in pure Rust.

(O)TP (VA)ULT - ova. ova is a simple CLI tool which lets you manage your TOTPs, or basically lets you get your two-way authentication code straight to

Giorgi Anakidze 3 Apr 28, 2023
Generates a Nix expression for buildDotnetModule, with support for non nuget.org repos.

nuget2nix Generates a Nix expression for buildDotnetModule, with support for non nuget.org repos. Usage Similar to the nuget-to-nix command available

Winter 9 Dec 10, 2022
A command line tool for managing financial investment portfolios written in Rust.

A command line tool for managing financial investment portfolios written in Rust. This project is the modern successor of finance. Installation You ca

Markus Zoppelt 15 Dec 21, 2022
Lockbox is a command-line tool for generating and managing passwords

Lockbox is a command-line tool for generating and managing passwords. It uses strong encryption algorithms to securely store your passwords, so you can be sure that your data is safe.

Sonu Bardai 15 Oct 9, 2023
The Zero Knowledge Whitelist Tool is a powerful utility for managing an address whitelist using Zero-Knowledge (ZK) proofs.

zk_whitelist: A Zero Knowledge Whitelist Tool The Zero Knowledge Whitelist Tool is a powerful utility for managing an address whitelist using Zero-Kno

Nikos Koumbakis 4 Nov 21, 2023
Elegant and simple software for managing personal finance.

kash Elegant and simple software for managing personal finance. ⚠️ This project is still a work-in-progress. Author Kees van Voorthuizen License Licen

Kees van Voorthuizen 4 Oct 17, 2022
A quick create wizard to create and modify opinionated kustomize deployments.

kqc ?? ☸️ A quick create wizard to create and modify opinionated kustomize deployments. This tool should help to quickly create and build up kustomize

Daniel Jankowski 8 May 20, 2023
πŸ”— Tool for rebasing a chain of local git branches.

git-chain Tool for rebasing a chain of local git branches. Motivation Suppose you have branches, each depending on a parent branch (usually called "st

Alberto Leal 10 Jul 15, 2022
Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format.

What is it? Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format. Security Dexios-Core uses

brxken 3 Jul 4, 2022
Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transactions of your non-custodial wallets on a provider of your choice, all while respecting your privacy

Bitcoin Push Notification Service (BPNS) Description Bitcoin Push Notification Service (BPNS) allows you to receive notifications of Bitcoin transacti

BPNS 1 May 2, 2022