Files
git/builtin/stripspace.c
Johannes Schindelin 1a92a7c67f mingw: ensure that core.longPaths is handled *always*
A ton of Git commands simply do not read (or at least parse) the core.*
settings. This is not good, as Git for Windows relies on the
core.longPaths setting to be read quite early on.

So let's just make sure that all commands read the config and give
platform_core_config() a chance.

This patch teaches tons of Git commands to respect the config setting
`core.longPaths = true`, including `pack-refs`, thereby fixing
https://github.com/git-for-windows/git/issues/1218

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2018-09-05 09:25:45 -04:00

64 lines
1.5 KiB
C

#include "builtin.h"
#include "cache.h"
#include "config.h"
#include "parse-options.h"
#include "strbuf.h"
static void comment_lines(struct strbuf *buf)
{
char *msg;
size_t len;
msg = strbuf_detach(buf, &len);
strbuf_add_commented_lines(buf, msg, len);
free(msg);
}
static const char * const stripspace_usage[] = {
N_("git stripspace [-s | --strip-comments]"),
N_("git stripspace [-c | --comment-lines]"),
NULL
};
enum stripspace_mode {
STRIP_DEFAULT = 0,
STRIP_COMMENTS,
COMMENT_LINES
};
int cmd_stripspace(int argc, const char **argv, const char *prefix)
{
struct strbuf buf = STRBUF_INIT;
enum stripspace_mode mode = STRIP_DEFAULT;
const struct option options[] = {
OPT_CMDMODE('s', "strip-comments", &mode,
N_("skip and remove all lines starting with comment character"),
STRIP_COMMENTS),
OPT_CMDMODE('c', "comment-lines", &mode,
N_("prepend comment character and space to each line"),
COMMENT_LINES),
OPT_END()
};
argc = parse_options(argc, argv, prefix, options, stripspace_usage, 0);
if (argc)
usage_with_options(stripspace_usage, options);
if (mode == STRIP_COMMENTS || mode == COMMENT_LINES)
setup_git_directory_gently(NULL);
git_config(git_default_config, NULL);
if (strbuf_read(&buf, 0, 1024) < 0)
die_errno("could not read the input");
if (mode == STRIP_DEFAULT || mode == STRIP_COMMENTS)
strbuf_stripspace(&buf, mode == STRIP_COMMENTS);
else
comment_lines(&buf);
write_or_die(1, buf.buf, buf.len);
strbuf_release(&buf);
return 0;
}