forked from tj/git-extras
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request tj#466 from anarcat/master
add simple sed command
- Loading branch information
Showing
5 changed files
with
341 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
#!/bin/sh | ||
|
||
usage() { | ||
cat <<EOF | ||
usage: git sed [ -c ] [ -f <flags> ] <search> <replacement> | ||
Run git grep and then send results to sed for replacement with the | ||
given flags, if -f is provided. | ||
Also runs git commit if -c is provided. | ||
EOF | ||
} | ||
|
||
# don't commit by default | ||
do_commit() { | ||
true | ||
} | ||
|
||
while [ "X$1" != "X" ]; do | ||
case "$1" in | ||
-c|--commit) | ||
if git status --porcelain | grep .; then | ||
echo "you need to commit your changes before running with --commit" | ||
exit 1 | ||
fi | ||
do_commit() { | ||
git commit -m"replace $search with $replacement | ||
actual command: | ||
$command" -a | ||
} | ||
;; | ||
-f|--flags) | ||
if [ "X$2" = "X" ]; then | ||
usage | ||
echo "missing argument for $1" | ||
exit 1 | ||
fi | ||
shift | ||
flags=$1 | ||
;; | ||
-h|--help) | ||
usage | ||
exit | ||
;; | ||
-*) | ||
usage | ||
echo "unkonwn flag: $1" | ||
exit 1 | ||
;; | ||
*) | ||
if [ "X$search" = "X" ]; then | ||
search="$1" | ||
elif [ "X$replacement" = "X" ]; then | ||
replacement="$1" | ||
else | ||
usage | ||
echo "too many arguments: $1" | ||
exit 1 | ||
fi | ||
;; | ||
esac | ||
shift | ||
done | ||
|
||
command="git grep -l '$search' | xargs sed -i 's/$search/$replacement/$flags'" | ||
git grep -l "$search" | xargs sed -i "s/$search/$replacement/$flags" | ||
do_commit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
.\" generated with Ronn/v0.7.3 | ||
.\" http://github.com/rtomayko/ronn/tree/0.7.3 | ||
. | ||
.TH "GIT\-SED" "1" "October 2015" "" "" | ||
. | ||
.SH "NAME" | ||
\fBgit\-sed\fR \- replace patterns in git\-controlled files | ||
. | ||
.SH "SYNOPSIS" | ||
\fBgit\-sed\fR [ \-c ] [ \-f \fIflags\fR ] \fIsearch\fR \fIreplacement\fR | ||
. | ||
.SH "DESCRIPTION" | ||
Run git grep and then send results to sed for replacement with the given flags, if \-f is provided\. | ||
. | ||
.P | ||
Also runs git commit if \-c is provided\. | ||
. | ||
.SH "OPTIONS" | ||
\-c | ||
. | ||
.P | ||
commit the resulting changes with a standard commit message detailing the exact command ran\. will fail if there are unstaged changes\. | ||
. | ||
.P | ||
\-f <flags> | ||
. | ||
.P | ||
will use the given regex flags in the sed command (for example "g" replaces multiple times on the same line)\. | ||
. | ||
.P | ||
<search> | ||
. | ||
.P | ||
the pattern passed to grep and to the first part of the sed expression\. | ||
. | ||
.P | ||
<replacement> | ||
. | ||
.P | ||
the replacement passed to sed, the second part of the sed expression\. | ||
. | ||
.SH "EXAMPLES" | ||
. | ||
.nf | ||
|
||
$ git sed \'my_function\' \'do_stuff\' | ||
# \.\.\. only does the changes, without committing | ||
$ git commit \-m"use proper function name" | ||
$ git sed \-c \'do_stuff\' \'stuff\' | ||
# \.\. does the changes and a commit | ||
$ git sed \-f g do_stuff stuff | ||
# \.\. g is actually pretty important, otherwise you will miss some | ||
# stuff! | ||
. | ||
.fi | ||
. | ||
.SH "AUTHOR" | ||
Written by Antoine Beaupré <\fIanarcat@debian\.org\fR> from inspiration by https://github\.com/da\-x/git\-search\-replace and http://stackoverflow\.com/questions/9651898/is\-there\-a\-git\-sed\-or\-equivalent | ||
. | ||
.SH "REPORTING BUGS" | ||
<\fIhttps://github\.com/tj/git\-extras/issues\fR> | ||
. | ||
.SH "SEE ALSO" | ||
<\fIhttps://github\.com/tj/git\-extras\fR> |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
git-sed(1) -- replace patterns in git-controlled files | ||
====================================================== | ||
|
||
## SYNOPSIS | ||
|
||
`git-sed` [ -c ] [ -f <flags> ] <search> <replacement> | ||
|
||
## DESCRIPTION | ||
|
||
Run git grep and then send results to sed for replacement with the | ||
given flags, if -f is provided. | ||
|
||
Also runs git commit if -c is provided. | ||
|
||
## OPTIONS | ||
|
||
-c | ||
|
||
commit the resulting changes with a standard commit message | ||
detailing the exact command ran. will fail if there are unstaged | ||
changes. | ||
|
||
-f <flags> | ||
|
||
will use the given regex flags in the sed command (for example "g" | ||
replaces multiple times on the same line). | ||
|
||
<search> | ||
|
||
the pattern passed to grep and to the first part of the sed expression. | ||
|
||
<replacement> | ||
|
||
the replacement passed to sed, the second part of the sed expression. | ||
|
||
## EXAMPLES | ||
|
||
$ git sed 'my_function' 'do_stuff' | ||
# ... only does the changes, without committing | ||
$ git commit -m"use proper function name" | ||
$ git sed -c 'do_stuff' 'stuff' | ||
# .. does the changes and a commit | ||
$ git sed -f g do_stuff stuff | ||
# .. g is actually pretty important, otherwise you will miss some | ||
# stuff! | ||
|
||
## AUTHOR | ||
|
||
Written by Antoine Beaupré <<[email protected]>> from | ||
inspiration by https://github.com/da-x/git-search-replace and | ||
http://stackoverflow.com/questions/9651898/is-there-a-git-sed-or-equivalent | ||
|
||
## REPORTING BUGS | ||
|
||
<<https://github.com/tj/git-extras/issues>> | ||
|
||
## SEE ALSO | ||
|
||
<<https://github.com/tj/git-extras>> |