npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

git-x

v1.2.1

Published

run git commands on multiple folders

Downloads

16

Readme

git x (git times)

A simple bash script to run git commands into multiple nested git repositories.

It is great for projects that are split into multiple repositories.

The tool detects nested git repositories (one level deep) and run any command you pass to it on each nested repository:

git x status
git x checkout master
git x pull
git x <any valid git command and arguments>

Motivation

It has become a common practice these days to break bigger projects into smaller ones. Take the example bellow:

.
├── README.md
├── frontend-app/
├── library-1/
├── library-2/
├── service-1/
└── service-2/

And while this approach makes it easier to maintain and deploy each project individually, it adds complexity to manage them all as "one". There are solutions like foreman and docker-compose that helps running them, but you still need to manage each Git repository individually.

This project's goal is to make it easy to run a git command on all these nested git repositories at once. So you can change branches, pull changes and check statuses; literally do everything you could if you would be running these commands on each nested folders.

So instead of doing:

git status

cd frontend-app
git status
cd ..

cd library-1
git status
cd ..

cd library-2
git status
cd ..

cd service-1
git status
cd ..

cd service-2
git status
cd ..

You can simply do:

git x status

It is Git Submodules without all the hassle.

Cloning

Another motivation is on-boarding new developers to a project. We wanted to make it easy to clone a parent repository, and from it clone, all the nested repositories.

If run the tool on a git repository, it automatically creates a .gitrepositories file containing the URLs for all nested repositories, such as:

[email protected]:fancy-project/frontend-app.git
[email protected]:fancy-project/library-1.git
[email protected]:fancy-project/library-2.git
[email protected]:fancy-project/service-1.git
[email protected]:fancy-project/service-2.git

This file then can be checked into source control and latter be used to clone all nested repositories by a new developer:

git x clone

Instalation

For simplicity, it is available as a NPM package:

npm install -g git-x

But since it is a simple bash script, you can simply download the latest release and add it to your path.

curl -O https://raw.githubusercontent.com/pirelenito/git-x/master/git-x.sh
chmod +x git-x.sh