This is an obscure and confusing way of representing it. At the very least, I’d expect the addition of ⬇ to mean behind remote, and then ⬇⬆ to mean diverged (since it is logically just “both behind and ahead”).
For my part, I prefer a notation like “-4+5” to mean “4 commits behind, 5 commits ahead”, produced in this way in my $RPROMPT:
AFAIK mr does not need much config, mostly just running `mr register` after `git clone`. When you do need to set config, the `mr config` command can help. All that said, I do have a lot of custom config :)
There is a `mr bootstrap` command for pulling a repo with a .mrconfig file in it, and then pulling a bunch of repos from there, here is an example usage:
But to be honest given the regular naming you might as well have a simple perl/ruby script to just read a list of names from STDIN and output the local directory-path, and remote.
Nice... I made "Bulk Git Ops" Bash functions to source into shell and tab-complete to invoke. (nb. I organise my sources like this: ~/src/{github,gitlab,bitbucket}/{usernames..}/{reponames..}).
Examples assume that repos you contribute to are spread across
remote hosts, and (hopefully) namespaced sanely. I organise my
sources as follows.
~/src/{github,gitlab,bitbucket}/{usernames..}/{reponames..}
QUERY: Count repos that are stale:
ls_git_projects ~/src/ | take_stale | count_repos_by_remote
QUERY: Count repos that are active (within 12 hours by default):
ls_git_projects ~/src/ | take_active | count_repos_by_remote
EXECUTE! Use 'xgit' to apply simple git commands to the given repos, with logs to STDERR/stty
ls_git_projects ~/src/bitbucket | xgit fetch # bitbucket-hosted repos
EXECUTE! Use 'proc_repos' to apply custom functions to, with logs to STDERR/stty
ls_git_projects ~/src/bitbucket | proc_repos git_fetch # all repos
ls_git_projects ~/src/bitbucket | take_stale | proc_repos git_fetch # only stale repos
ls_git_projects ~/src/bitbucket | take_active | proc_repos git_fetch # only active repos
EXECUTE! What's the current branch? Logs to STDERR/stty
ls_git_projects ~/src/bitbucket | proc_repos git_branch_current # all repos
EXECUTE! With logs redirected to hidden dir for logging (you must create it by hand first)
mkdir -p "${logdir}"
ls_git_projects ~/src/bitbucket | proc_repos git_branch_current 2>> "${logdir}/bulkops.log"
tail "${logdir}/bulkops.log"
My own my generic and more powerful git-map lets you run any git command on all repos at the same directory level. Simply putting the shell script in your path and then $git map status or $git map fetch etc
reminds me of an project I made many years ago to manage dependencies in between repositories. So if project A was waiting for a fix in project B to be in production, you could draw a line between the two commits (from project A to project B) and get notified when the commit in project B gets into the "production" branch. And then merge and deploy your feature branch from project A.
I mean, i love those kind of cli tools but in my current mood, instead looking for it on github, I'd probably ask an frontier model:
“Create a cross-platform CLI tool that scans multiple Git projects (grouped by category) and reports their status (clean, modified, ahead, error) based on a YAML config.”
Allways surprised how far this gets me. Most of my dotfiles now got created this way.
Cool, I just had claude code write me something similiar this week to go through my immediate directories and get me this type of information on each one of this (since all of my git repos are under a single dir)
fun fact: check-projects is initially a nodejs script I wrote specifically for my projects few years ago;
My first usage to test out claude code was to generalize this script: cople hours later it was entirely rewritten with Go and and CI on github actions you see now here.
tester457|3 months ago
https://github.com/alajmo/mani
chrismorgan|3 months ago
> ⬆⬆ - Diverged from remote
This is an obscure and confusing way of representing it. At the very least, I’d expect the addition of ⬇ to mean behind remote, and then ⬇⬆ to mean diverged (since it is logically just “both behind and ahead”).
For my part, I prefer a notation like “-4+5” to mean “4 commits behind, 5 commits ahead”, produced in this way in my $RPROMPT:
pimlottc|3 months ago
pabs3|3 months ago
https://myrepos.branchable.com/ https://myrepos.branchable.com/related/
weinzierl|3 months ago
My only gripe is that configuration is manual and I wish there was an easy way fetch a set of repos from the well known forges into an mr config.
Oh, and I never figured out how to best work with it in a multi worktree per bare repo setup.
pabs3|3 months ago
There is a `mr bootstrap` command for pulling a repo with a .mrconfig file in it, and then pulling a bunch of repos from there, here is an example usage:
https://wiki.debian.org/DebianInstaller/CheckOut
mr does have bare repo support, I haven't tried git multi-worktree stuff before though. I guess you would have to manually register each worktree.
stevekemp|3 months ago
https://github.com/skx/github2mr
But to be honest given the regular naming you might as well have a simple perl/ruby script to just read a list of names from STDIN and output the local directory-path, and remote.
igortg|3 months ago
We've being using it for years. Very simple to setup.
postoplust|3 months ago
It's a shell script (#!sh) and therefore easy as copy/paste to install.
adityaathalye|3 months ago
ref: bulk-git-ops.sh in my repo https://github.com/adityaathalye/bash-toolkit/
This way:
gerardnico|3 months ago
I made a git exec command for that. It executes a command on multiple repos.
So to see the status of your local repositories cloned in the code directory of your home directory
´´´bash
export GIT_X_REPOS_FILE=~/code
git exec status
´´´
Code: https://github.com/gerardnico/git-x/blob/main/bin/git-exec
Doc: https://github.com/gerardnico/git-x/blob/main/docs/bin-gener...
chrisdugne|3 months ago
Run check-projects to see which of your projects have uncommitted changes, are ahead of remote, or have other git status indicators.
pss314|3 months ago
r0ze-at-hn|3 months ago
https://github.com/r0ze-at-github/git-map
davvid|3 months ago
https://github.com/garden-rs/garden
pabs3|3 months ago
gadrev|3 months ago
[1]: https://github.com/nosarthur/gita/
leipert|3 months ago
0xml|3 months ago
https://gerrit.googlesource.com/git-repo
alain_gilbert|3 months ago
alajmo|3 months ago
tomxor|3 months ago
chrisdugne|3 months ago
x uralys/web * M www
then you go work with your modifications on your project. https://github.com/rupa/z is perfect to go from projects to projects.
funkattack|3 months ago
“Create a cross-platform CLI tool that scans multiple Git projects (grouped by category) and reports their status (clean, modified, ahead, error) based on a YAML config.”
Allways surprised how far this gets me. Most of my dotfiles now got created this way.
ngalaiko|3 months ago
chrisdugne|3 months ago
the aim of check-projects is just to keep track of the work still not fully done and pushed.
fastasucan|3 months ago
rcleveng|3 months ago
chrisdugne|3 months ago
My first usage to test out claude code was to generalize this script: cople hours later it was entirely rewritten with Go and and CI on github actions you see now here.