There are many times when I need to update at once more than just one git project.
I usually structure my projects under a common directory like /Users/Dikran/workspace/projects.
When I update I
I justs happens that recently I needed two things:
1) check updated code of more than one project.
2) check changes made on other branches than the current one.
As you know, git pull is updating only the current branch in a project. Moreover it has the following limitations (quoting from git-up project):
So in order to solve those needs at once, there is a simple solution enabled by a simple script and a great git extension called
I usually structure my projects under a common directory like /Users/Dikran/workspace/projects.
When I update I
cd
to the respective project and git pull
.I justs happens that recently I needed two things:
1) check updated code of more than one project.
2) check changes made on other branches than the current one.
As you know, git pull is updating only the current branch in a project. Moreover it has the following limitations (quoting from git-up project):
"It merges upstream changes by default, when it's really more polite to rebase over them, unless your collaborators enjoy a commit graph that looks like bedhead.
It only updates the branch you're currently on, which means git push will shout at you for being behind on branches you don't particularly care about right now."
So in order to solve those needs at once, there is a simple solution enabled by a simple script and a great git extension called
git-up
. This is a very convenient tool that does many nice things in completion to what git already offers. Check the site for docs and info.
The steps:
1. Install git-up extension
1. Install git-up extension
For Ruby (the original):
2. Create a script (i.e.
The
For a variation you can filter directory names if for instance you want updated only specific directories within a certain project. So for instance if you have your main project called
gem install git-upOr for the Python port:
pip install git-up
2. Create a script (i.e.
updateAll.sh
) in the root directory of your git subprojects, containing the following:#!/bin/bash set -x for project in */ do git -C $project up & done waitThe script cycles through all subdirectories in the current directory, and issues background calls to git-up on every discovered directory.
The
wait
is added at the end so that the script shall exit only after all directory updating commands finished.For a variation you can filter directory names if for instance you want updated only specific directories within a certain project. So for instance if you have your main project called
myshop
and the composing modules are myshop-frontend/ myshop-backend/ myshop-tests/
then just change the
for project in */with
for project in myshop*/
Thats't all. Simple, isn't it?
A warning note though. Although git-up suits most cases, please check the documentation first, to be sure it won't mess things in your specific project's commit conventions.
A warning note though. Although git-up suits most cases, please check the documentation first, to be sure it won't mess things in your specific project's commit conventions.
Have a nice day,
Dikran
Dikran
No comments :
Post a Comment