-
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 branches 'master' and 'jc/combine' into next
* master: Add git-clean command diff_flush(): leakfix. parse_date(): fix parsing 03/10/2006 * jc/combine: combine-diff: refactor built-in xdiff interface.
- Loading branch information
Showing
9 changed files
with
243 additions
and
68 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,50 @@ | ||
git-clean(1) | ||
============ | ||
|
||
NAME | ||
---- | ||
git-clean - Remove untracked files from the working tree | ||
|
||
SYNOPSIS | ||
-------- | ||
[verse] | ||
'git-clean' [-d] [-n] [-q] [-x | -X] | ||
|
||
DESCRIPTION | ||
----------- | ||
Removes files unknown to git. This allows to clean the working tree | ||
from files that are not under version control. If the '-x' option is | ||
specified, ignored files are also removed, allowing to remove all | ||
build products. | ||
|
||
OPTIONS | ||
------- | ||
-d:: | ||
Remove untracked directories in addition to untracked files. | ||
|
||
-n:: | ||
Don't actually remove anything, just show what would be done. | ||
|
||
-q:: | ||
Be quiet, only report errors, but not the files that are | ||
successfully removed. | ||
|
||
-x:: | ||
Don't use the ignore rules. This allows removing all untracked | ||
files, including build products. This can be used (possibly in | ||
conjunction with gitlink:git-reset[1]) to create a pristine | ||
working directory to test a clean build. | ||
|
||
-X:: | ||
Remove only files ignored by git. This may be useful to rebuild | ||
everything from scratch, but keep manually created files. | ||
|
||
|
||
Author | ||
------ | ||
Written by Pavel Roskin <proski@gnu.org> | ||
|
||
|
||
GIT | ||
--- | ||
Part of the gitlink:git[7] suite |
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
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
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,80 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2005-2006 Pavel Roskin | ||
# | ||
|
||
USAGE="[-d] [-n] [-q] [-x | -X]" | ||
LONG_USAGE='Clean untracked files from the working directory | ||
-d remove directories as well | ||
-n don'\''t remove anything, just show what would be done | ||
-q be quiet, only report errors | ||
-x remove ignored files as well | ||
-X remove only ignored files as well' | ||
SUBDIRECTORY_OK=Yes | ||
. git-sh-setup | ||
|
||
ignored= | ||
ignoredonly= | ||
cleandir= | ||
quiet= | ||
rmf="rm -f" | ||
rmrf="rm -rf" | ||
rm_refuse="echo Not removing" | ||
echo1="echo" | ||
|
||
while case "$#" in 0) break ;; esac | ||
do | ||
case "$1" in | ||
-d) | ||
cleandir=1 | ||
;; | ||
-n) | ||
quiet=1 | ||
rmf="echo Would remove" | ||
rmrf="echo Would remove" | ||
rm_refuse="echo Would not remove" | ||
echo1=":" | ||
;; | ||
-q) | ||
quiet=1 | ||
;; | ||
-x) | ||
ignored=1 | ||
;; | ||
-X) | ||
ignoredonly=1 | ||
;; | ||
*) | ||
usage | ||
esac | ||
shift | ||
done | ||
|
||
case "$ignored,$ignoredonly" in | ||
1,1) usage;; | ||
esac | ||
|
||
if [ -z "$ignored" ]; then | ||
excl="--exclude-per-directory=.gitignore" | ||
if [ -f "$GIT_DIR/info/exclude" ]; then | ||
excl_info="--exclude-from=$GIT_DIR/info/exclude" | ||
fi | ||
if [ "$ignoredonly" ]; then | ||
excl="$excl --ignored" | ||
fi | ||
fi | ||
|
||
git-ls-files --others --directory $excl ${excl_info:+"$excl_info"} | | ||
while read -r file; do | ||
if [ -d "$file" -a ! -L "$file" ]; then | ||
if [ -z "$cleandir" ]; then | ||
$rm_refuse "$file" | ||
continue | ||
fi | ||
$echo1 "Removing $file" | ||
$rmrf "$file" | ||
else | ||
$echo1 "Removing $file" | ||
$rmf "$file" | ||
fi | ||
done |
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,58 @@ | ||
#include "cache.h" | ||
#include "xdiff-interface.h" | ||
|
||
static void consume_one(void *priv_, char *s, unsigned long size) | ||
{ | ||
struct xdiff_emit_state *priv = priv_; | ||
char *ep; | ||
while (size) { | ||
unsigned long this_size; | ||
ep = memchr(s, '\n', size); | ||
this_size = (ep == NULL) ? size : (ep - s + 1); | ||
priv->consume(priv, s, this_size); | ||
size -= this_size; | ||
s += this_size; | ||
} | ||
} | ||
|
||
int xdiff_outf(void *priv_, mmbuffer_t *mb, int nbuf) | ||
{ | ||
struct xdiff_emit_state *priv = priv_; | ||
int i; | ||
|
||
for (i = 0; i < nbuf; i++) { | ||
if (mb[i].ptr[mb[i].size-1] != '\n') { | ||
/* Incomplete line */ | ||
priv->remainder = realloc(priv->remainder, | ||
priv->remainder_size + | ||
mb[i].size); | ||
memcpy(priv->remainder + priv->remainder_size, | ||
mb[i].ptr, mb[i].size); | ||
priv->remainder_size += mb[i].size; | ||
continue; | ||
} | ||
|
||
/* we have a complete line */ | ||
if (!priv->remainder) { | ||
consume_one(priv, mb[i].ptr, mb[i].size); | ||
continue; | ||
} | ||
priv->remainder = realloc(priv->remainder, | ||
priv->remainder_size + | ||
mb[i].size); | ||
memcpy(priv->remainder + priv->remainder_size, | ||
mb[i].ptr, mb[i].size); | ||
consume_one(priv, priv->remainder, | ||
priv->remainder_size + mb[i].size); | ||
free(priv->remainder); | ||
priv->remainder = NULL; | ||
priv->remainder_size = 0; | ||
} | ||
if (priv->remainder) { | ||
consume_one(priv, priv->remainder, priv->remainder_size); | ||
free(priv->remainder); | ||
priv->remainder = NULL; | ||
priv->remainder_size = 0; | ||
} | ||
return 0; | ||
} |
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,18 @@ | ||
#ifndef XDIFF_INTERFACE_H | ||
#define XDIFF_INTERFACE_H | ||
|
||
#include "xdiff/xdiff.h" | ||
|
||
struct xdiff_emit_state; | ||
|
||
typedef void (*xdiff_emit_consume_fn)(void *, char *, unsigned long); | ||
|
||
struct xdiff_emit_state { | ||
xdiff_emit_consume_fn consume; | ||
char *remainder; | ||
unsigned long remainder_size; | ||
}; | ||
|
||
int xdiff_outf(void *priv_, mmbuffer_t *mb, int nbuf); | ||
|
||
#endif |