Coder Social home page Coder Social logo

git-submodule-url-rewrite's Introduction

git-submodule-url-rewrite

Easy rewrite of git submodule urls

Features:

  • Rewrite submodule urls using Extended Regular Expressions (sed -r)
  • Recursive rewrite (-r) for big submodule hierarchies

Usage

$ git submodule-url-rewrite -h
usage: git submodule-url-rewrite [-h|--help] [-v|--verbose] [-q|--quiet] [-r|--recursive] [-s|--no-stage] [-u|--no-update] sed-command

Rewrites all submodule urls using the given sed-script

options:
  -h|--help       Print this help
  -v|--verbose    Make this script verbose
  -q|--quiet      Don't print anything
  -r|--recursive  Also rewrite submodules of submodules
  -s|--no-stage   Don't stage changed .gitmodule files for commit
  -u|--no-update  Don't run 'git submodule --quiet update --init' in each submodule

sed-command: A sed command used to transform urls.

Example

Clone Enteee/example-dependency

$ git clone https://github.com/Enteee/example-dependency.git
Cloning into 'example-dependency'...
remote: Enumerating objects: 39, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 39 (delta 5), reused 39 (delta 5), pack-reused 0
Unpacking objects: 100% (39/39), done.

The .gitmodules file points to githubtraining/example-submodule.git

$ cat example-dependency/.gitmodules
[submodule "js"]
  path = js
  url = https://github.com/githubtraining/example-submodule.git

Rewrite that to point to the repository Enteee/example-submodule.git:

$ git -C example-dependency/ submodule-url-rewrite 's|githubtraining|Enteee|'
rewrite url for submodule 'js' in '/tmp/example-dependency' from 'https://github.com/githubtraining/example-submodule.git' to 'https://github.com/Enteee/example-submodule.git'

Installation

Installation of the command is as simple as copying the script somewhere to your ${PATH} and making it executable.

$ cd /usr/local/bin
$ curl \
  --output git-submodule-url-rewrite \
  https://raw.githubusercontent.com/Enteee/git-submodule-url-rewrite/master/git-submodule-url-rewrite
$ chmod a+x git-submodule-url-rewrite

git-submodule-url-rewrite's People

Contributors

enteee avatar smirkybg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

git-submodule-url-rewrite's Issues

Empty .gitmodules files cause a non-zero exit code

Hello,

I just stumbled accross a weird bug.
I have this project with recursive submodules. One of the submodules has an empty .gitmodules file. After running a recursive url rewrite, sed exits with a non-zero exit code and fails the whole rewrite script. I found that using --verbose.
Below, you will find an example log with obfuscated paths and names:

Entering 'path/to/submoduleX'
+ url_rewrite
+ set -euo pipefail
+ '[' true = true ']'
+ set -x
+ local toplevel
++ git rev-parse --show-toplevel
+ toplevel=/var/jenkins/workspace/blablabla/path/to/submoduleX
+ local gitmodules
+ gitmodules=/var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules
+ cd /var/jenkins/workspace/blablabla/path/to/submoduleX
+ '[' '!' -r /var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules ']'
+ sed -nre 's/^\[submodule \"(.*)\"]$/\1\x0/p' /var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules
+ IFS=
+ read -rd '' submodule
+ xargs -0 -n1 printf '%b\0'
+ tr -d '\n'
+ submodule_url_rewrite ''
+ local name
+ name=
+ shift
+ local toplevel
++ git rev-parse --show-toplevel
+ toplevel=/var/jenkins/workspace/blablabla/path/to/submoduleX
+ local old_url
++ git config --file=/var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules submodule..url
+ old_url=
Stopping at 'path/to/submoduleX'; script returned non-zero status.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.