From: Junio C Hamano Date: Fri, 9 Oct 2009 07:02:23 +0000 (-0700) Subject: Merge branch 'ms/msvc' X-Git-Tag: v1.6.5~21 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/8ba5effa26707fdc5b8a3b10f0fdd3007f657b64?hp=b5d18b8e6f68746a85edfea08e9aff3351d7e891 Merge branch 'ms/msvc' * ms/msvc: Fix the exit code of MSVC build scripts on cygwin Fix MSVC build on cygwin --- diff --git a/Documentation/RelNotes-1.6.5.txt b/Documentation/RelNotes-1.6.5.txt index 25529f7234..636e226a37 100644 --- a/Documentation/RelNotes-1.6.5.txt +++ b/Documentation/RelNotes-1.6.5.txt @@ -32,7 +32,7 @@ Updates since v1.6.4 (subsystems) - * various updates to git-svn and gitweb. + * various updates to gitk, git-svn and gitweb. (portability) @@ -41,16 +41,22 @@ Updates since v1.6.4 * mingw will also give FRSX as the default value for the LESS environment variable when the user does not have one. + * initial support to compile git on Windows with MSVC. + (performance) * On major platforms, the system can be compiled to use with Linus's block-sha1 implementation of the SHA-1 hash algorithm, which outperforms the default fallback implementation we borrowed from - Mozzilla. + Mozilla. * Unnecessary inefficiency in deepening of a shallow repository has been removed. + * "git clone" does not grab objects that it does not need (i.e. + referenced only from refs outside refs/heads and refs/tags + hierarchy) anymore. + * The "git" main binary used to link with libcurl, which then dragged in a large number of external libraries. When using basic plumbing commands in scripts, this unnecessarily slowed things down. We now @@ -84,12 +90,21 @@ Updates since v1.6.4 * "git am" learned "--scissors" option to allow you to discard early part of an incoming e-mail. + * "git archive -o output.zip" works without being told what format to + use with an explicit "--format=zip".option. + * "git checkout", "git reset" and "git stash" learned to pick and choose to use selected changes you made, similar to "git add -p". * "git clone" learned a "-b" option to pick a HEAD to check out different from the remote's default branch. + * "git clone" learned --recursive option. + + * "git clone" from a local repository on a different filesystem used to + copy individual object files without preserving the old timestamp, giving + them extra lifetime in the new repository until they gc'ed. + * "git commit --dry-run $args" is a new recommended way to ask "what would happen if I try to commit with these arguments." @@ -143,19 +158,18 @@ Updates since v1.6.4 * With GIT_TEST_OPTS="--root=/p/a/t/h", tests can be run outside the source directory; using tmpfs may give faster turnaround. + * With NO_PERL_MAKEMAKER set, DESTDIR= is now honoured, so you can + build for one location, and install into another location to tar it + up. Fixes since v1.6.4 ------------------ -# All of the fixes in v1.6.4.X maintenance series are included in this -# release, unless otherwise noted. - -# Here are fixes that this release has, but have not been backported to -# v1.6.4.X series. +All of the fixes in v1.6.4.X maintenance series are included in this +release, unless otherwise noted. -- exec >/var/tmp/1 -O=v1.6.4.2-298-gdf01e7c -O=v1.6.5-rc0-49-g5f2b1e6 +O=v1.6.5-rc3-4-gbf8fc21 echo O=$(git describe master) git shortlog --no-merges $O..master --not maint diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt index 32ea8564a5..2b40babb6b 100644 --- a/Documentation/git-filter-branch.txt +++ b/Documentation/git-filter-branch.txt @@ -12,6 +12,7 @@ SYNOPSIS [--index-filter ] [--parent-filter ] [--msg-filter ] [--commit-filter ] [--tag-name-filter ] [--subdirectory-filter ] + [--prune-empty] [--original ] [-d ] [-f | --force] [--] [...] diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index dcac8c8e29..1f6df6ad6b 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -106,7 +106,7 @@ much time is spent optimizing the delta compression of the objects in the repository when the --aggressive option is specified. The larger the value, the more time is spent optimizing the delta compression. See the documentation for the --window' option in linkgit:git-repack[1] for -more details. This defaults to 10. +more details. This defaults to 250. The optional configuration variable 'gc.pruneExpire' controls how old the unreferenced loose objects have to be before they are pruned. The diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt index be39ed7c15..6928724a05 100644 --- a/Documentation/gitcli.txt +++ b/Documentation/gitcli.txt @@ -81,7 +81,7 @@ couple of magic command line options: + --------------------------------------------- $ git describe -h -usage: git-describe [options] * +usage: git describe [options] * --contains find the tag that comes after the commit --debug debug search strategy on stderr diff --git a/Makefile b/Makefile index ae9bb03382..629ab35047 100644 --- a/Makefile +++ b/Makefile @@ -734,6 +734,7 @@ ifeq ($(uname_S),SunOS) NO_MKSTEMPS = YesPlease NO_REGEX = YesPlease NO_EXTERNAL_GREP = YesPlease + THREADED_DELTA_SEARCH = YesPlease ifeq ($(uname_R),5.7) NEEDS_RESOLV = YesPlease NO_IPV6 = YesPlease @@ -840,11 +841,18 @@ ifeq ($(uname_S),IRIX) NO_MEMMEM = YesPlease NO_MKSTEMPS = YesPlease NO_MKDTEMP = YesPlease + # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads + # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set), + # git dies with a segmentation fault when trying to access the first + # entry of a reflog. The conservative choice is made to always set + # NO_MMAP. If you suspect that your compiler is not affected by this + # issue, comment out the NO_MMAP statement. NO_MMAP = YesPlease NO_EXTERNAL_GREP = UnfortunatelyYes SNPRINTF_RETURNS_BOGUS = YesPlease SHELL_PATH = /usr/gnu/bin/bash NEEDS_LIBGEN = YesPlease + THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),IRIX64) NO_SETENV=YesPlease @@ -853,11 +861,18 @@ ifeq ($(uname_S),IRIX64) NO_MEMMEM = YesPlease NO_MKSTEMPS = YesPlease NO_MKDTEMP = YesPlease + # When compiled with the MIPSpro 7.4.4m compiler, and without pthreads + # (i.e. NO_PTHREADS is set), and _with_ MMAP (i.e. NO_MMAP is not set), + # git dies with a segmentation fault when trying to access the first + # entry of a reflog. The conservative choice is made to always set + # NO_MMAP. If you suspect that your compiler is not affected by this + # issue, comment out the NO_MMAP statement. NO_MMAP = YesPlease NO_EXTERNAL_GREP = UnfortunatelyYes SNPRINTF_RETURNS_BOGUS = YesPlease SHELL_PATH=/usr/gnu/bin/bash NEEDS_LIBGEN = YesPlease + THREADED_DELTA_SEARCH = YesPlease endif ifeq ($(uname_S),HP-UX) NO_IPV6=YesPlease diff --git a/README b/README index c932ab3105..67cfeb2016 100644 --- a/README +++ b/README @@ -37,7 +37,7 @@ CVS users may also want to read Documentation/gitcvs-migration.txt ("man gitcvs-migration" or "git help cvs-migration" if git is installed). -Many Git online resources are accessible from http://git.or.cz/ +Many Git online resources are accessible from http://git-scm.com/ including full documentation and Git related tools. The user discussion and development of Git take place on the Git diff --git a/builtin-clone.c b/builtin-clone.c index bab2d84ea1..4992c2597c 100644 --- a/builtin-clone.c +++ b/builtin-clone.c @@ -329,24 +329,28 @@ static void remove_junk_on_signal(int signo) raise(signo); } -static struct ref *write_remote_refs(const struct ref *refs, - struct refspec *refspec, const char *reflog) +static struct ref *wanted_peer_refs(const struct ref *refs, + struct refspec *refspec) { struct ref *local_refs = NULL; struct ref **tail = &local_refs; - struct ref *r; get_fetch_map(refs, refspec, &tail, 0); if (!option_mirror) get_fetch_map(refs, tag_refspec, &tail, 0); + return local_refs; +} + +static void write_remote_refs(const struct ref *local_refs) +{ + const struct ref *r; + for (r = local_refs; r; r = r->next) add_extra_ref(r->peer_ref->name, r->old_sha1, 0); pack_refs(PACK_REFS_ALL); clear_extra_refs(); - - return local_refs; } int cmd_clone(int argc, const char **argv, const char *prefix) @@ -495,9 +499,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix) strbuf_reset(&value); - if (path && !is_bundle) + if (path && !is_bundle) { refs = clone_local(path, git_dir); - else { + mapped_refs = wanted_peer_refs(refs, refspec); + } else { struct remote *remote = remote_get(argv[0]); transport = transport_get(remote, remote->url[0]); @@ -520,14 +525,16 @@ int cmd_clone(int argc, const char **argv, const char *prefix) option_upload_pack); refs = transport_get_remote_refs(transport); - if (refs) - transport_fetch_refs(transport, refs); + if (refs) { + mapped_refs = wanted_peer_refs(refs, refspec); + transport_fetch_refs(transport, mapped_refs); + } } if (refs) { clear_extra_refs(); - mapped_refs = write_remote_refs(refs, refspec, reflog_msg.buf); + write_remote_refs(mapped_refs); remote_head = find_ref_by_name(refs, "HEAD"); remote_head_points_at = diff --git a/builtin-ls-files.c b/builtin-ls-files.c index f473220502..2c95ca6105 100644 --- a/builtin-ls-files.c +++ b/builtin-ls-files.c @@ -524,11 +524,8 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix) ps_matched = xcalloc(1, num); } - if ((dir.flags & DIR_SHOW_IGNORED) && !exc_given) { - fprintf(stderr, "%s: --ignored needs some exclude pattern\n", - argv[0]); - exit(1); - } + if ((dir.flags & DIR_SHOW_IGNORED) && !exc_given) + die("ls-files --ignored needs some exclude pattern"); /* With no flags, we default to showing the cached files */ if (!(show_stage | show_deleted | show_others | show_unmerged | diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c index d498b1cd2d..c90cd312ac 100644 --- a/builtin-mailinfo.c +++ b/builtin-mailinfo.c @@ -785,8 +785,10 @@ static int handle_commit_msg(struct strbuf *line) if (use_scissors && is_scissors_line(line)) { int i; - rewind(cmitmsg); - ftruncate(fileno(cmitmsg), 0); + if (fseek(cmitmsg, 0L, SEEK_SET)) + die_errno("Could not rewind output message file"); + if (ftruncate(fileno(cmitmsg), 0)) + die_errno("Could not truncate output message file at scissors"); still_looking = 1; /* diff --git a/builtin-show-branch.c b/builtin-show-branch.c index 3510a86e38..be95930b78 100644 --- a/builtin-show-branch.c +++ b/builtin-show-branch.c @@ -565,7 +565,15 @@ static int git_show_branch_config(const char *var, const char *value, void *cb) if (!strcmp(var, "showbranch.default")) { if (!value) return config_error_nonbool(var); - if (default_alloc <= default_num + 1) { + /* + * default_arg is now passed to parse_options(), so we need to + * mimick the real argv a bit better. + */ + if (!default_num) { + default_alloc = 20; + default_arg = xcalloc(default_alloc, sizeof(*default_arg)); + default_arg[default_num++] = "show-branch"; + } else if (default_alloc <= default_num + 1) { default_alloc = default_alloc * 3 / 2 + 20; default_arg = xrealloc(default_arg, sizeof *default_arg * default_alloc); } @@ -692,8 +700,8 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) /* If nothing is specified, try the default first */ if (ac == 1 && default_num) { - ac = default_num + 1; - av = default_arg - 1; /* ick; we would not address av[0] */ + ac = default_num; + av = default_arg; } ac = parse_options(ac, av, prefix, builtin_show_branch_options, diff --git a/cache.h b/cache.h index 1a6412dfd6..a5eeead1e2 100644 --- a/cache.h +++ b/cache.h @@ -489,6 +489,7 @@ struct lock_file { }; #define LOCK_DIE_ON_ERROR 1 #define LOCK_NODEREF 2 +extern int unable_to_lock_error(const char *path, int err); extern NORETURN void unable_to_lock_index_die(const char *path, int err); extern int hold_lock_file_for_update(struct lock_file *, const char *path, int); extern int hold_lock_file_for_append(struct lock_file *, const char *path, int); diff --git a/compat/bswap.h b/compat/bswap.h index 7246a12c6e..5cc4acbfcc 100644 --- a/compat/bswap.h +++ b/compat/bswap.h @@ -9,7 +9,7 @@ * Default version that the compiler ought to optimize properly with * constant values. */ -static inline unsigned int default_swab32(unsigned int val) +static inline uint32_t default_swab32(uint32_t val) { return (((val & 0xff000000) >> 24) | ((val & 0x00ff0000) >> 8) | @@ -20,7 +20,7 @@ static inline unsigned int default_swab32(unsigned int val) #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) #define bswap32(x) ({ \ - unsigned int __res; \ + uint32_t __res; \ if (__builtin_constant_p(x)) { \ __res = default_swab32(x); \ } else { \ diff --git a/contrib/buildsystems/Generators/Vcproj.pm b/contrib/buildsystems/Generators/Vcproj.pm index 00ec0c1369..be94ba18d2 100644 --- a/contrib/buildsystems/Generators/Vcproj.pm +++ b/contrib/buildsystems/Generators/Vcproj.pm @@ -131,6 +131,7 @@ sub createLibProject { $includes =~ s/-I//g; mkdir "$target" || die "Could not create the directory $target for lib project!\n"; open F, ">$target/$target.vcproj" || die "Could not open $target/$target.pro for writing!\n"; + binmode F, ":crlf"; print F << "EOM"; $target/$target.vcproj" || die "Could not open $target/$target.pro for writing!\n"; + binmode F, ":crlf"; print F << "EOM"; git.sln" || die "Could not open git.sln for writing!\n"; + binmode F, ":crlf"; print F "$SLN_HEAD"; foreach (@libs) { my $libname = $_; @@ -568,45 +571,29 @@ sub createGlueProject { print F "\"${libname}\", \"${libname}\\${libname}.vcproj\", \"${uuid}\""; print F "$SLN_POST"; } + my $uuid_libgit = $build_structure{"LIBS_libgit_GUID"}; + my $uuid_xdiff_lib = $build_structure{"LIBS_xdiff_lib_GUID"}; foreach (@apps) { my $appname = $_; my $uuid = $build_structure{"APPS_${appname}_GUID"}; print F "$SLN_PRE"; - print F "\"${appname}\", \"${appname}\\${appname}.vcproj\", \"${uuid}\""; + print F "\"${appname}\", \"${appname}\\${appname}.vcproj\", \"${uuid}\"\n"; + print F " ProjectSection(ProjectDependencies) = postProject\n"; + print F " ${uuid_libgit} = ${uuid_libgit}\n"; + print F " ${uuid_xdiff_lib} = ${uuid_xdiff_lib}\n"; + print F " EndProjectSection"; print F "$SLN_POST"; } print F << "EOM"; Global - GlobalSection(SolutionConfiguration) = preSolution - ConfigName.0 = Debug|Win32 - ConfigName.1 = Release|Win32 + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution EOM - foreach (@{$build_structure{"APPS"}}) { - my $appname = $_; - my $appname_clean = $_; - $appname_clean =~ s/\//_/g; - $appname_clean =~ s/\.exe//; - - my $uuid = $build_structure{"APPS_${appname_clean}_GUID"}; - my $dep_index = 0; - foreach(@{$build_structure{"APPS_${appname}_LIBS"}}) { - my $libname = $_; - $libname =~ s/\//_/g; - $libname =~ s/\.(a|lib)//; - my $libuuid = $build_structure{"LIBS_${libname}_GUID"}; - if (defined $libuuid) { - print F "\t\t${uuid}.${dep_index} = ${libuuid}\n"; - $dep_index += 1; - } - } - } - print F << "EOM"; - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution + GlobalSection(ProjectConfigurationPlatforms) = postSolution EOM foreach (@libs) { my $libname = $_; @@ -627,10 +614,6 @@ sub createGlueProject { print F << "EOM"; EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection EndGlobal EOM close F; diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 2d2d5794ad..88b1b3c7a0 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -620,8 +620,8 @@ __git_aliased_command () done } -# __git_find_subcommand requires 1 argument -__git_find_subcommand () +# __git_find_on_cmdline requires 1 argument +__git_find_on_cmdline () { local word subcommand c=1 @@ -668,7 +668,7 @@ _git_am () --3way --committer-date-is-author-date --ignore-date --ignore-whitespace --ignore-space-change --interactive --keep --no-utf8 --signoff --utf8 - --whitespace= + --whitespace= --scissors " return esac @@ -740,7 +740,7 @@ _git_bisect () __git_has_doubledash && return local subcommands="start bad good skip reset visualize replay log run" - local subcommand="$(__git_find_subcommand "$subcommands")" + local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" return @@ -810,7 +810,21 @@ _git_checkout () { __git_has_doubledash && return - __gitcomp "$(__git_refs)" + local cur="${COMP_WORDS[COMP_CWORD]}" + case "$cur" in + --conflict=*) + __gitcomp "diff3 merge" "" "${cur##--conflict=}" + ;; + --*) + __gitcomp " + --quiet --ours --theirs --track --no-track --merge + --conflict= --patch + " + ;; + *) + __gitcomp "$(__git_refs)" + ;; + esac } _git_cherry () @@ -880,6 +894,7 @@ _git_commit () __gitcomp " --all --author= --signoff --verify --no-verify --edit --amend --include --only --interactive + --dry-run " return esac @@ -912,6 +927,8 @@ __git_diff_common_options="--stat --numstat --shortstat --summary --inter-hunk-context= --patience --raw + --dirstat --dirstat= --dirstat-by-file + --dirstat-by-file= --cumulative " _git_diff () @@ -1165,6 +1182,10 @@ _git_log () __gitcomp "$__git_log_date_formats" "" "${cur##--date=}" return ;; + --decorate=*) + __gitcomp "long short" "" "${cur##--decorate=}" + return + ;; --*) __gitcomp " $__git_log_common_options @@ -1177,7 +1198,7 @@ _git_log () --pretty= --format= --oneline --cherry-pick --graph - --decorate + --decorate --decorate= --walk-reflogs --parents --children $merge @@ -1749,7 +1770,7 @@ _git_config () _git_remote () { local subcommands="add rename rm show prune update set-head" - local subcommand="$(__git_find_subcommand "$subcommands")" + local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" return @@ -1780,7 +1801,7 @@ _git_reset () local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) - __gitcomp "--merge --mixed --hard --soft" + __gitcomp "--merge --mixed --hard --soft --patch" return ;; esac @@ -1876,18 +1897,30 @@ _git_show_branch () _git_stash () { + local cur="${COMP_WORDS[COMP_CWORD]}" + local save_opts='--keep-index --no-keep-index --quiet --patch' local subcommands='save list show apply clear drop pop create branch' - local subcommand="$(__git_find_subcommand "$subcommands")" + local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" + case "$cur" in + --*) + __gitcomp "$save_opts" + ;; + *) + if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then + __gitcomp "$subcommands" + else + COMPREPLY=() + fi + ;; + esac else - local cur="${COMP_WORDS[COMP_CWORD]}" case "$subcommand,$cur" in save,--*) - __gitcomp "--keep-index" + __gitcomp "$save_opts" ;; apply,--*|pop,--*) - __gitcomp "--index" + __gitcomp "--index --quiet" ;; show,--*|drop,--*|branch,--*) COMPREPLY=() @@ -1908,7 +1941,7 @@ _git_submodule () __git_has_doubledash && return local subcommands="add status init update summary foreach sync" - if [ -z "$(__git_find_subcommand "$subcommands")" ]; then + if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in --*) @@ -1930,7 +1963,7 @@ _git_svn () proplist show-ignore show-externals branch tag blame migrate " - local subcommand="$(__git_find_subcommand "$subcommands")" + local subcommand="$(__git_find_on_cmdline "$subcommands")" if [ -z "$subcommand" ]; then __gitcomp "$subcommands" else diff --git a/date.c b/date.c index e9ee4aa748..5d05ef61cf 100644 --- a/date.c +++ b/date.c @@ -123,7 +123,7 @@ const char *show_date_relative(unsigned long time, int tz, return timebuf; } /* Say months for the past 12 months or so */ - if (diff < 360) { + if (diff < 365) { snprintf(timebuf, timebuf_size, "%lu months ago", (diff + 15) / 30); return timebuf; } diff --git a/fast-import.c b/fast-import.c index 7ef9865aa6..6faaaacb68 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1744,10 +1744,12 @@ static int validate_raw_date(const char *src, char *result, int maxlen) { const char *orig_src = src; char *endp; + unsigned long num; errno = 0; - strtoul(src, &endp, 10); + num = strtoul(src, &endp, 10); + /* NEEDSWORK: perhaps check for reasonable values? */ if (errno || endp == src || *endp != ' ') return -1; @@ -1755,8 +1757,9 @@ static int validate_raw_date(const char *src, char *result, int maxlen) if (*src != '-' && *src != '+') return -1; - strtoul(src + 1, &endp, 10); - if (errno || endp == src || *endp || (endp - orig_src) >= maxlen) + num = strtoul(src + 1, &endp, 10); + if (errno || endp == src + 1 || *endp || (endp - orig_src) >= maxlen || + 1400 < num) return -1; strcpy(result, orig_src); diff --git a/git-pull.sh b/git-pull.sh index 0bbd5bf7df..66d73eb59d 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -89,6 +89,7 @@ error_on_no_merge_candidates () { done curr_branch=${curr_branch#refs/heads/} + upstream=$(git config "branch.$curr_branch.merge") if [ -z "$curr_branch" ]; then echo "You are not currently on a branch, so I cannot use any" @@ -96,7 +97,7 @@ error_on_no_merge_candidates () { echo "Please specify which branch you want to merge on the command" echo "line and try again (e.g. 'git pull ')." echo "See git-pull(1) for details." - else + elif [ -z "$upstream" ]; then echo "You asked me to pull without telling me which branch you" echo "want to merge with, and 'branch.${curr_branch}.merge' in" echo "your configuration file does not tell me either. Please" @@ -114,6 +115,10 @@ error_on_no_merge_candidates () { echo " remote..fetch = " echo echo "See git-config(1) for details." + else + echo "Your configuration specifies to merge the ref" + echo "'${upstream#refs/heads/}' from the remote, but no such ref" + echo "was fetched." fi exit 1 } @@ -177,14 +182,7 @@ merge_head=$(sed -e '/ not-for-merge /d' \ case "$merge_head" in '') - case $? in - 0) error_on_no_merge_candidates "$@";; - 1) echo >&2 "You are not currently on a branch; you must explicitly" - echo >&2 "specify which branch you wish to merge:" - echo >&2 " git pull " - exit 1;; - *) exit $?;; - esac + error_on_no_merge_candidates "$@" ;; ?*' '?*) if test -z "$orig_head" diff --git a/git-send-email.perl b/git-send-email.perl index 0700d80afc..dd821f70cd 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -921,7 +921,7 @@ sub send_message $smtp ||= Net::SMTP->new((defined $smtp_server_port) ? "$smtp_server:$smtp_server_port" : $smtp_server); - if ($smtp_encryption eq 'tls') { + if ($smtp_encryption eq 'tls' && $smtp) { require Net::SMTP::SSL; $smtp->command('STARTTLS'); $smtp->response(); diff --git a/git-submodule.sh b/git-submodule.sh index bfbd36b6f4..0462e529d9 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -98,7 +98,7 @@ module_clone() if test -d "$path" then rmdir "$path" 2>/dev/null || - die "Directory '$path' exist, but is neither empty nor a git repository" + die "Directory '$path' exists, but is neither empty nor a git repository" fi test -e "$path" && diff --git a/gitk-git/gitk b/gitk-git/gitk index 8c08310e6d..a0214b7004 100644 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -2526,6 +2526,7 @@ proc savestuff {w} { if {$stuffsaved} return if {![winfo viewable .]} return catch { + if {[file exists ~/.gitk-new]} {file delete -force ~/.gitk-new} set f [open "~/.gitk-new" w] if {$::tcl_platform(platform) eq {windows}} { file attributes "~/.gitk-new" -hidden true @@ -3167,6 +3168,28 @@ proc flist_hl {only} { set gdttype [mc "touching paths:"] } +proc gitknewtmpdir {} { + global diffnum gitktmpdir gitdir + + if {![info exists gitktmpdir]} { + set gitktmpdir [file join [file dirname $gitdir] \ + [format ".gitk-tmp.%s" [pid]]] + if {[catch {file mkdir $gitktmpdir} err]} { + error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err" + unset gitktmpdir + return {} + } + set diffnum 0 + } + incr diffnum + set diffdir [file join $gitktmpdir $diffnum] + if {[catch {file mkdir $diffdir} err]} { + error_popup "[mc "Error creating temporary directory %s:" $diffdir] $err" + return {} + } + return $diffdir +} + proc save_file_from_commit {filename output what} { global nullfile @@ -3201,11 +3224,10 @@ proc external_diff_get_one_file {diffid filename diffdir} { } proc external_diff {} { - global gitktmpdir nullid nullid2 + global nullid nullid2 global flist_menu_file global diffids - global diffnum - global gitdir extdifftool + global extdifftool if {[llength $diffids] == 1} { # no reference commit given @@ -3227,22 +3249,8 @@ proc external_diff {} { } # make sure that several diffs wont collide - if {![info exists gitktmpdir]} { - set gitktmpdir [file join [file dirname $gitdir] \ - [format ".gitk-tmp.%s" [pid]]] - if {[catch {file mkdir $gitktmpdir} err]} { - error_popup "[mc "Error creating temporary directory %s:" $gitktmpdir] $err" - unset gitktmpdir - return - } - set diffnum 0 - } - incr diffnum - set diffdir [file join $gitktmpdir $diffnum] - if {[catch {file mkdir $diffdir} err]} { - error_popup "[mc "Error creating temporary directory %s:" $diffdir] $err" - return - } + set diffdir [gitknewtmpdir] + if {$diffdir eq {}} return # gather files to diff set difffromfile [external_diff_get_one_file $diffidfrom $flist_menu_file $diffdir] @@ -7400,7 +7408,7 @@ proc getblobdiffline {bdf ids} { $ctext conf -state normal while {[incr nr] <= 1000 && [gets $bdf line] >= 0} { if {$ids != $diffids || $bdf != $blobdifffd($ids)} { - close $bdf + catch {close $bdf} return 0 } if {![string compare -length 5 "diff " $line]} { @@ -7552,7 +7560,7 @@ proc getblobdiffline {bdf ids} { } $ctext conf -state disabled if {[eof $bdf]} { - close $bdf + catch {close $bdf} return 0 } return [expr {$nr >= 1000? 2: 1}] @@ -8273,8 +8281,11 @@ proc do_cmp_commits {a b} { appendshortlink $a [mc "Commit "] " $heada\n" appendshortlink $b [mc " differs from\n "] \ " $headb\n" - $ctext insert end [mc "- stopping\n"] - break + $ctext insert end [mc "Diff of commits:\n\n"] + $ctext conf -state disabled + update + diffcommits $a $b + return } } if {$skipa} { @@ -8300,6 +8311,31 @@ proc do_cmp_commits {a b} { $ctext conf -state disabled } +proc diffcommits {a b} { + global diffcontext diffids blobdifffd diffinhdr + + set tmpdir [gitknewtmpdir] + set fna [file join $tmpdir "commit-[string range $a 0 7]"] + set fnb [file join $tmpdir "commit-[string range $b 0 7]"] + if {[catch { + exec git diff-tree -p --pretty $a >$fna + exec git diff-tree -p --pretty $b >$fnb + } err]} { + error_popup [mc "Error writing commit to file: %s" $err] + return + } + if {[catch { + set fd [open "| diff -U$diffcontext $fna $fnb" r] + } err]} { + error_popup [mc "Error diffing commits: %s" $err] + return + } + set diffids [list commits $a $b] + set blobdifffd($diffids) $fd + set diffinhdr 0 + filerun $fd [list getblobdiffline $fd $diffids] +} + proc diffvssel {dirn} { global rowmenuid selectedline diff --git a/gitk-git/po/sv.po b/gitk-git/po/sv.po index 947b53f6b0..624eb2281e 100644 --- a/gitk-git/po/sv.po +++ b/gitk-git/po/sv.po @@ -1,32 +1,40 @@ # Swedish translation for gitk -# Copyright (C) 2005-2008 Paul Mackerras +# Copyright (C) 2005-2009 Paul Mackerras # This file is distributed under the same license as the gitk package. # -# Peter Karlsson , 2008. +# Peter Krefting , 2008-2009. # Mikael Magnusson , 2008. msgid "" msgstr "" "Project-Id-Version: sv\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-18 22:03+1100\n" -"PO-Revision-Date: 2008-08-03 19:03+0200\n" -"Last-Translator: Mikael Magnusson \n" -"Language-Team: Swedish \n" +"POT-Creation-Date: 2009-08-13 13:38+0100\n" +"PO-Revision-Date: 2009-08-13 13:40+0100\n" +"Last-Translator: Peter Krefting \n" +"Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" +"Content-Transfer-Encoding: 8bit" #: gitk:113 msgid "Couldn't get list of unmerged files:" -msgstr "Kunde inta hämta lista över ej sammanslagna filer:" +msgstr "Kunde inte hämta lista över ej sammanslagna filer:" -#: gitk:340 +#: gitk:269 +msgid "Error parsing revisions:" +msgstr "Fel vid tolkning av revisioner:" + +#: gitk:324 +msgid "Error executing --argscmd command:" +msgstr "Fel vid körning av --argscmd-kommando:" + +#: gitk:337 msgid "No files selected: --merge specified but no files are unmerged." msgstr "" "Inga filer valdes: --merge angavs men det finns inga filer som inte har " "slagits samman." -#: gitk:343 +#: gitk:340 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." @@ -34,261 +42,290 @@ msgstr "" "Inga filer valdes: --merge angavs men det finns inga filer inom " "filbegränsningen." -#: gitk:365 gitk:503 +#: gitk:362 gitk:509 msgid "Error executing git log:" msgstr "Fel vid körning av git log:" -#: gitk:378 +#: gitk:380 gitk:525 msgid "Reading" msgstr "Läser" -#: gitk:438 gitk:3462 +#: gitk:440 gitk:4123 msgid "Reading commits..." msgstr "Läser incheckningar..." -#: gitk:441 gitk:1528 gitk:3465 +#: gitk:443 gitk:1561 gitk:4126 msgid "No commits selected" msgstr "Inga incheckningar markerade" -#: gitk:1399 +#: gitk:1437 msgid "Can't parse git log output:" msgstr "Kan inte tolka utdata från git log:" -#: gitk:1605 +#: gitk:1657 msgid "No commit information available" msgstr "Ingen incheckningsinformation är tillgänglig" -#: gitk:1709 gitk:1731 gitk:3259 gitk:7764 gitk:9293 gitk:9466 +#: gitk:1793 gitk:1817 gitk:3916 gitk:8786 gitk:10322 gitk:10498 msgid "OK" msgstr "OK" -#: gitk:1733 gitk:3260 gitk:7439 gitk:7510 gitk:7613 gitk:7660 gitk:7766 -#: gitk:9294 gitk:9467 +#: gitk:1819 gitk:3918 gitk:8383 gitk:8457 gitk:8567 gitk:8616 gitk:8788 +#: gitk:10323 gitk:10499 msgid "Cancel" msgstr "Avbryt" -#: gitk:1811 +#: gitk:1919 msgid "Update" msgstr "Uppdatera" -#: gitk:1812 +#: gitk:1920 msgid "Reload" msgstr "Ladda om" -#: gitk:1813 +#: gitk:1921 msgid "Reread references" msgstr "Läs om referenser" -#: gitk:1814 +#: gitk:1922 msgid "List references" msgstr "Visa referenser" -#: gitk:1815 +#: gitk:1924 +msgid "Start git gui" +msgstr "Starta git gui" + +#: gitk:1926 msgid "Quit" msgstr "Avsluta" -#: gitk:1810 +#: gitk:1918 msgid "File" msgstr "Arkiv" -#: gitk:1818 +#: gitk:1930 msgid "Preferences" msgstr "Inställningar" -#: gitk:1817 +#: gitk:1929 msgid "Edit" msgstr "Redigera" -#: gitk:1821 +#: gitk:1934 msgid "New view..." msgstr "Ny vy..." -#: gitk:1822 +#: gitk:1935 msgid "Edit view..." msgstr "Ändra vy..." -#: gitk:1823 +#: gitk:1936 msgid "Delete view" msgstr "Ta bort vy" -#: gitk:1825 +#: gitk:1938 msgid "All files" msgstr "Alla filer" -#: gitk:1820 gitk:3196 +#: gitk:1933 gitk:3670 msgid "View" msgstr "Visa" -#: gitk:1828 gitk:2487 +#: gitk:1943 gitk:1953 gitk:2654 msgid "About gitk" msgstr "Om gitk" -#: gitk:1829 +#: gitk:1944 gitk:1958 msgid "Key bindings" msgstr "Tangentbordsbindningar" -#: gitk:1827 +#: gitk:1942 gitk:1957 msgid "Help" msgstr "Hjälp" -#: gitk:1887 +#: gitk:2018 msgid "SHA1 ID: " msgstr "SHA1-id: " -#: gitk:1918 +#: gitk:2049 msgid "Row" msgstr "Rad" -#: gitk:1949 +#: gitk:2080 msgid "Find" msgstr "Sök" -#: gitk:1950 +#: gitk:2081 msgid "next" msgstr "nästa" -#: gitk:1951 +#: gitk:2082 msgid "prev" msgstr "föreg" -#: gitk:1952 +#: gitk:2083 msgid "commit" msgstr "incheckning" -#: gitk:1955 gitk:1957 gitk:3617 gitk:3640 gitk:3664 gitk:5550 gitk:5621 +#: gitk:2086 gitk:2088 gitk:4284 gitk:4307 gitk:4331 gitk:6272 gitk:6344 +#: gitk:6428 msgid "containing:" msgstr "som innehåller:" -#: gitk:1958 gitk:2954 gitk:2959 gitk:3692 +#: gitk:2089 gitk:3162 gitk:3167 gitk:4359 msgid "touching paths:" msgstr "som rör sökväg:" -#: gitk:1959 gitk:3697 +#: gitk:2090 gitk:4364 msgid "adding/removing string:" msgstr "som lägger/till tar bort sträng:" -#: gitk:1968 gitk:1970 +#: gitk:2099 gitk:2101 msgid "Exact" msgstr "Exakt" -#: gitk:1970 gitk:3773 gitk:5518 +#: gitk:2101 gitk:4439 gitk:6240 msgid "IgnCase" msgstr "IgnVersaler" -#: gitk:1970 gitk:3666 gitk:3771 gitk:5514 +#: gitk:2101 gitk:4333 gitk:4437 gitk:6236 msgid "Regexp" msgstr "Reg.uttr." -#: gitk:1972 gitk:1973 gitk:3792 gitk:3822 gitk:3829 gitk:5641 gitk:5708 +#: gitk:2103 gitk:2104 gitk:4458 gitk:4488 gitk:4495 gitk:6364 gitk:6432 msgid "All fields" msgstr "Alla fält" -#: gitk:1973 gitk:3790 gitk:3822 gitk:5580 +#: gitk:2104 gitk:4456 gitk:4488 gitk:6303 msgid "Headline" msgstr "Rubrik" -#: gitk:1974 gitk:3790 gitk:5580 gitk:5708 gitk:6109 +#: gitk:2105 gitk:4456 gitk:6303 gitk:6432 gitk:6866 msgid "Comments" msgstr "Kommentarer" -#: gitk:1974 gitk:3790 gitk:3794 gitk:3829 gitk:5580 gitk:6045 gitk:7285 -#: gitk:7300 +#: gitk:2105 gitk:4456 gitk:4460 gitk:4495 gitk:6303 gitk:6801 gitk:8063 +#: gitk:8078 msgid "Author" msgstr "Författare" -#: gitk:1974 gitk:3790 gitk:5580 gitk:6047 +#: gitk:2105 gitk:4456 gitk:6303 gitk:6803 msgid "Committer" msgstr "Incheckare" -#: gitk:2003 +#: gitk:2134 msgid "Search" msgstr "Sök" -#: gitk:2010 +#: gitk:2141 msgid "Diff" msgstr "Diff" -#: gitk:2012 +#: gitk:2143 msgid "Old version" msgstr "Gammal version" -#: gitk:2014 +#: gitk:2145 msgid "New version" msgstr "Ny version" -#: gitk:2016 +#: gitk:2147 msgid "Lines of context" msgstr "Rader sammanhang" -#: gitk:2026 +#: gitk:2157 msgid "Ignore space change" msgstr "Ignorera ändringar i blanksteg" -#: gitk:2084 +#: gitk:2215 msgid "Patch" msgstr "Patch" -#: gitk:2086 +#: gitk:2217 msgid "Tree" msgstr "Träd" -#: gitk:2213 gitk:2226 +#: gitk:2361 gitk:2378 msgid "Diff this -> selected" msgstr "Diff denna -> markerad" -#: gitk:2214 gitk:2227 +#: gitk:2362 gitk:2379 msgid "Diff selected -> this" msgstr "Diff markerad -> denna" -#: gitk:2215 gitk:2228 +#: gitk:2363 gitk:2380 msgid "Make patch" msgstr "Skapa patch" -#: gitk:2216 gitk:7494 +#: gitk:2364 gitk:8441 msgid "Create tag" msgstr "Skapa tagg" -#: gitk:2217 gitk:7593 +#: gitk:2365 gitk:8547 msgid "Write commit to file" msgstr "Skriv incheckning till fil" -#: gitk:2218 gitk:7647 +#: gitk:2366 gitk:8604 msgid "Create new branch" msgstr "Skapa ny gren" -#: gitk:2219 +#: gitk:2367 msgid "Cherry-pick this commit" msgstr "Plocka denna incheckning" -#: gitk:2220 +#: gitk:2368 msgid "Reset HEAD branch to here" msgstr "Återställ HEAD-grenen hit" -#: gitk:2234 +#: gitk:2369 +msgid "Mark this commit" +msgstr "Markera denna incheckning" + +#: gitk:2370 +msgid "Return to mark" +msgstr "Återgå till markering" + +#: gitk:2371 +msgid "Find descendant of this and mark" +msgstr "Hitta efterföljare till denna och markera" + +#: gitk:2372 +msgid "Compare with marked commit" +msgstr "Jämför med markerad incheckning" + +#: gitk:2386 msgid "Check out this branch" msgstr "Checka ut denna gren" -#: gitk:2235 +#: gitk:2387 msgid "Remove this branch" msgstr "Ta bort denna gren" -#: gitk:2242 +#: gitk:2394 msgid "Highlight this too" msgstr "Markera även detta" -#: gitk:2243 +#: gitk:2395 msgid "Highlight this only" msgstr "Markera bara detta" -#: gitk:2244 +#: gitk:2396 msgid "External diff" msgstr "Extern diff" -#: gitk:2245 +#: gitk:2397 msgid "Blame parent commit" -msgstr "" +msgstr "Klandra föräldraincheckning" -#: gitk:2488 +#: gitk:2404 +msgid "Show origin of this line" +msgstr "Visa ursprunget för den här raden" + +#: gitk:2405 +msgid "Run git gui blame on this line" +msgstr "Kör git gui blame på den här raden" + +#: gitk:2656 msgid "" "\n" "Gitk - a commit viewer for git\n" @@ -304,427 +341,672 @@ msgstr "" "\n" "Använd och vidareförmedla enligt villkoren i GNU General Public License" -#: gitk:2496 gitk:2557 gitk:7943 +#: gitk:2664 gitk:2726 gitk:8969 msgid "Close" msgstr "Stäng" -#: gitk:2515 +#: gitk:2683 msgid "Gitk key bindings" msgstr "Tangentbordsbindningar för Gitk" -#: gitk:2517 +#: gitk:2686 msgid "Gitk key bindings:" msgstr "Tangentbordsbindningar för Gitk:" -#: gitk:2519 +#: gitk:2688 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tAvsluta" -#: gitk:2520 +#: gitk:2689 msgid "\t\tMove to first commit" msgstr "\t\tGå till första incheckning" -#: gitk:2521 +#: gitk:2690 msgid "\t\tMove to last commit" msgstr "\t\tGå till sista incheckning" -#: gitk:2522 +#: gitk:2691 msgid ", p, i\tMove up one commit" msgstr ", p, i\tGå en incheckning upp" -#: gitk:2523 +#: gitk:2692 msgid ", n, k\tMove down one commit" msgstr ", n, k\tGå en incheckning ned" -#: gitk:2524 +#: gitk:2693 msgid ", z, j\tGo back in history list" msgstr ", z, j\tGå bakåt i historiken" -#: gitk:2525 +#: gitk:2694 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tGå framåt i historiken" -#: gitk:2526 +#: gitk:2695 msgid "\tMove up one page in commit list" msgstr "\tGå upp en sida i incheckningslistan" -#: gitk:2527 +#: gitk:2696 msgid "\tMove down one page in commit list" msgstr "\tGå ned en sida i incheckningslistan" -#: gitk:2528 +#: gitk:2697 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tRulla till början av incheckningslistan" -#: gitk:2529 +#: gitk:2698 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tRulla till slutet av incheckningslistan" -#: gitk:2530 +#: gitk:2699 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg" -#: gitk:2531 +#: gitk:2700 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg" -#: gitk:2532 +#: gitk:2701 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida" -#: gitk:2533 +#: gitk:2702 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida" -#: gitk:2534 +#: gitk:2703 msgid "\tFind backwards (upwards, later commits)" msgstr "\tSök bakåt (uppåt, senare incheckningar)" -#: gitk:2535 +#: gitk:2704 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tSök framåt (nedåt, tidigare incheckningar)" -#: gitk:2536 +#: gitk:2705 msgid ", b\tScroll diff view up one page" msgstr ", b\tRulla diffvisningen upp en sida" -#: gitk:2537 +#: gitk:2706 msgid "\tScroll diff view up one page" msgstr "\tRulla diffvisningen upp en sida" -#: gitk:2538 +#: gitk:2707 msgid "\t\tScroll diff view down one page" msgstr "\tRulla diffvisningen ned en sida" -#: gitk:2539 +#: gitk:2708 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tRulla diffvisningen upp 18 rader" -#: gitk:2540 +#: gitk:2709 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tRulla diffvisningen ned 18 rader" -#: gitk:2541 +#: gitk:2710 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tSök" -#: gitk:2542 +#: gitk:2711 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tGå till nästa sökträff" -#: gitk:2543 +#: gitk:2712 msgid "\tMove to next find hit" msgstr "\t\tGå till nästa sökträff" -#: gitk:2544 -msgid "/\t\tMove to next find hit, or redo find" -msgstr "/\t\tGå till nästa sökträff, eller sök på nytt" +#: gitk:2713 +msgid "/\t\tFocus the search box" +msgstr "/\t\tFokusera sökrutan" -#: gitk:2545 +#: gitk:2714 msgid "?\t\tMove to previous find hit" msgstr "?\t\tGå till föregående sökträff" -#: gitk:2546 +#: gitk:2715 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tRulla diffvisningen till nästa fil" -#: gitk:2547 +#: gitk:2716 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen" -#: gitk:2548 +#: gitk:2717 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen" -#: gitk:2549 +#: gitk:2718 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Num+>\tÖka teckenstorlek" -#: gitk:2550 +#: gitk:2719 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tÖka teckenstorlek" -#: gitk:2551 +#: gitk:2720 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Num->\tMinska teckenstorlek" -#: gitk:2552 +#: gitk:2721 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tMinska teckenstorlek" -#: gitk:2553 +#: gitk:2722 msgid "\t\tUpdate" msgstr "\t\tUppdatera" -#: gitk:3200 +#: gitk:3177 +#, tcl-format +msgid "Error getting \"%s\" from %s:" +msgstr "Fel vid hämtning av \"%s\" från %s:" + +#: gitk:3234 gitk:3243 +#, tcl-format +msgid "Error creating temporary directory %s:" +msgstr "Fel vid skapande av temporär katalog %s:" + +#: gitk:3255 +msgid "command failed:" +msgstr "kommando misslyckades:" + +#: gitk:3401 +msgid "No such commit" +msgstr "Incheckning saknas" + +#: gitk:3415 +msgid "git gui blame: command failed:" +msgstr "git gui blame: kommando misslyckades:" + +#: gitk:3446 +#, tcl-format +msgid "Couldn't read merge head: %s" +msgstr "Kunde inte läsa sammanslagningshuvud: %s" + +#: gitk:3454 +#, tcl-format +msgid "Error reading index: %s" +msgstr "Fel vid läsning av index: %s" + +#: gitk:3479 +#, tcl-format +msgid "Couldn't start git blame: %s" +msgstr "Kunde inte starta git blame: %s" + +#: gitk:3482 gitk:6271 +msgid "Searching" +msgstr "Söker" + +#: gitk:3514 +#, tcl-format +msgid "Error running git blame: %s" +msgstr "Fel vid körning av git blame: %s" + +#: gitk:3542 +#, tcl-format +msgid "That line comes from commit %s, which is not in this view" +msgstr "Raden kommer från incheckningen %s, som inte finns i denna vy" + +#: gitk:3556 +msgid "External diff viewer failed:" +msgstr "Externt diff-verktyg misslyckades:" + +#: gitk:3674 msgid "Gitk view definition" msgstr "Definition av Gitk-vy" -#: gitk:3225 -msgid "Name" -msgstr "Namn" - -#: gitk:3228 +#: gitk:3678 msgid "Remember this view" msgstr "Spara denna vy" -#: gitk:3232 -msgid "Commits to include (arguments to git log):" -msgstr "Incheckningar att ta med (argument till git log):" +#: gitk:3679 +msgid "References (space separated list):" +msgstr "Referenser (blankstegsavdelad lista):" -#: gitk:3239 -msgid "Command to generate more commits to include:" -msgstr "Kommando för att generera fler incheckningar att ta med:" +#: gitk:3680 +msgid "Branches & tags:" +msgstr "Grenar & taggar:" + +#: gitk:3681 +msgid "All refs" +msgstr "Alla referenser" + +#: gitk:3682 +msgid "All (local) branches" +msgstr "Alla (lokala) grenar" + +#: gitk:3683 +msgid "All tags" +msgstr "Alla taggar" + +#: gitk:3684 +msgid "All remote-tracking branches" +msgstr "Alla fjärrspårande grenar" + +#: gitk:3685 +msgid "Commit Info (regular expressions):" +msgstr "Incheckningsinfo (reguljära uttryck):" -#: gitk:3246 +#: gitk:3686 +msgid "Author:" +msgstr "Författare:" + +#: gitk:3687 +msgid "Committer:" +msgstr "Incheckare:" + +#: gitk:3688 +msgid "Commit Message:" +msgstr "Incheckningsmeddelande:" + +#: gitk:3689 +msgid "Matches all Commit Info criteria" +msgstr "Motsvarar alla kriterier för incheckningsinfo" + +#: gitk:3690 +msgid "Changes to Files:" +msgstr "Ändringar av filer:" + +#: gitk:3691 +msgid "Fixed String" +msgstr "Fast sträng" + +#: gitk:3692 +msgid "Regular Expression" +msgstr "Reguljärt uttryck" + +#: gitk:3693 +msgid "Search string:" +msgstr "Söksträng:" + +#: gitk:3694 +msgid "" +"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" +msgstr "" +"Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " +"15:27:38\"):" + +#: gitk:3695 +msgid "Since:" +msgstr "Från:" + +#: gitk:3696 +msgid "Until:" +msgstr "Till:" + +#: gitk:3697 +msgid "Limit and/or skip a number of revisions (positive integer):" +msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):" + +#: gitk:3698 +msgid "Number to show:" +msgstr "Antal att visa:" + +#: gitk:3699 +msgid "Number to skip:" +msgstr "Antal att hoppa över:" + +#: gitk:3700 +msgid "Miscellaneous options:" +msgstr "Diverse alternativ:" + +#: gitk:3701 +msgid "Strictly sort by date" +msgstr "Strikt datumsortering" + +#: gitk:3702 +msgid "Mark branch sides" +msgstr "Markera sidogrenar" + +#: gitk:3703 +msgid "Limit to first parent" +msgstr "Begränsa till första förälder" + +#: gitk:3704 +msgid "Simple history" +msgstr "Enkel historik" + +#: gitk:3705 +msgid "Additional arguments to git log:" +msgstr "Ytterligare argument till git log:" + +#: gitk:3706 msgid "Enter files and directories to include, one per line:" msgstr "Ange filer och kataloger att ta med, en per rad:" -#: gitk:3293 +#: gitk:3707 +msgid "Command to generate more commits to include:" +msgstr "Kommando för att generera fler incheckningar att ta med:" + +#: gitk:3829 +msgid "Gitk: edit view" +msgstr "Gitk: redigera vy" + +#: gitk:3837 +msgid "-- criteria for selecting revisions" +msgstr " - kriterier för val av revisioner" + +#: gitk:3842 +msgid "View Name:" +msgstr "Namn på vy:" + +#: gitk:3917 +msgid "Apply (F5)" +msgstr "Använd (F5)" + +#: gitk:3955 msgid "Error in commit selection arguments:" msgstr "Fel i argument för val av incheckningar:" -#: gitk:3347 gitk:3399 gitk:3842 gitk:3856 gitk:5060 gitk:10141 gitk:10142 +#: gitk:4008 gitk:4060 gitk:4508 gitk:4522 gitk:5783 gitk:11196 gitk:11197 msgid "None" msgstr "Inget" -#: gitk:3790 gitk:5580 gitk:7287 gitk:7302 +#: gitk:4456 gitk:6303 gitk:8065 gitk:8080 msgid "Date" msgstr "Datum" -#: gitk:3790 gitk:5580 +#: gitk:4456 gitk:6303 msgid "CDate" msgstr "Skapat datum" -#: gitk:3939 gitk:3944 +#: gitk:4605 gitk:4610 msgid "Descendant" msgstr "Avkomling" -#: gitk:3940 +#: gitk:4606 msgid "Not descendant" msgstr "Inte avkomling" -#: gitk:3947 gitk:3952 +#: gitk:4613 gitk:4618 msgid "Ancestor" msgstr "Förfader" -#: gitk:3948 +#: gitk:4614 msgid "Not ancestor" msgstr "Inte förfader" -#: gitk:4187 +#: gitk:4904 msgid "Local changes checked in to index but not committed" msgstr "Lokala ändringar sparade i indexet men inte incheckade" -#: gitk:4220 +#: gitk:4940 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokala ändringar, ej sparade i indexet" -#: gitk:5549 -msgid "Searching" -msgstr "Söker" +#: gitk:6621 +msgid "many" +msgstr "många" -#: gitk:6049 +#: gitk:6805 msgid "Tags:" msgstr "Taggar:" -#: gitk:6066 gitk:6072 gitk:7280 +#: gitk:6822 gitk:6828 gitk:8058 msgid "Parent" msgstr "Förälder" -#: gitk:6077 +#: gitk:6833 msgid "Child" msgstr "Barn" -#: gitk:6086 +#: gitk:6842 msgid "Branch" msgstr "Gren" -#: gitk:6089 +#: gitk:6845 msgid "Follows" msgstr "Följer" -#: gitk:6092 +#: gitk:6848 msgid "Precedes" msgstr "Föregår" -#: gitk:6378 -msgid "Error getting merge diffs:" -msgstr "Fel vid hämtning av sammanslagningsdiff:" +#: gitk:7346 +#, tcl-format +msgid "Error getting diffs: %s" +msgstr "Fel vid hämtning av diff: %s" -#: gitk:7113 +#: gitk:7886 msgid "Goto:" msgstr "Gå till:" -#: gitk:7115 +#: gitk:7888 msgid "SHA1 ID:" msgstr "SHA1-id:" -#: gitk:7134 +#: gitk:7907 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Förkortat SHA1-id %s är tvetydigt" -#: gitk:7146 +#: gitk:7914 +#, tcl-format +msgid "Revision %s is not known" +msgstr "Revisionen %s är inte känd" + +#: gitk:7924 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA-id:t %s är inte känt" -#: gitk:7148 +#: gitk:7926 #, tcl-format -msgid "Tag/Head %s is not known" -msgstr "Tagg/huvud %s är okänt" +msgid "Revision %s is not in the current view" +msgstr "Revisionen %s finns inte i den nuvarande vyn" -#: gitk:7290 +#: gitk:8068 msgid "Children" msgstr "Barn" -#: gitk:7347 +#: gitk:8125 #, tcl-format msgid "Reset %s branch to here" msgstr "Återställ grenen %s hit" -#: gitk:7349 +#: gitk:8127 msgid "Detached head: can't reset" msgstr "Frånkopplad head: kan inte återställa" -#: gitk:7381 +#: gitk:8236 gitk:8242 +msgid "Skipping merge commit " +msgstr "Hoppar över sammanslagningsincheckning " + +#: gitk:8251 gitk:8256 +msgid "Error getting patch ID for " +msgstr "Fel vid hämtning av patch-id för " + +#: gitk:8252 gitk:8257 +msgid " - stopping\n" +msgstr " - stannar\n" + +#: gitk:8262 gitk:8265 gitk:8273 gitk:8283 gitk:8292 +msgid "Commit " +msgstr "Incheckning " + +#: gitk:8266 +msgid "" +" is the same patch as\n" +" " +msgstr "" +" är samma patch som\n" +" " + +#: gitk:8274 +msgid "" +" differs from\n" +" " +msgstr "" +" skiljer sig från\n" +" " + +#: gitk:8276 +msgid "- stopping\n" +msgstr "- stannar\n" + +#: gitk:8284 gitk:8293 +#, tcl-format +msgid " has %s children - stopping\n" +msgstr " har %s barn - stannar\n" + +#: gitk:8324 msgid "Top" msgstr "Topp" -#: gitk:7382 +#: gitk:8325 msgid "From" msgstr "Från" -#: gitk:7387 +#: gitk:8330 msgid "To" msgstr "Till" -#: gitk:7410 +#: gitk:8354 msgid "Generate patch" msgstr "Generera patch" -#: gitk:7412 +#: gitk:8356 msgid "From:" msgstr "Från:" -#: gitk:7421 +#: gitk:8365 msgid "To:" msgstr "Till:" -#: gitk:7430 +#: gitk:8374 msgid "Reverse" msgstr "Vänd" -#: gitk:7432 gitk:7607 +#: gitk:8376 gitk:8561 msgid "Output file:" msgstr "Utdatafil:" -#: gitk:7438 +#: gitk:8382 msgid "Generate" msgstr "Generera" -#: gitk:7474 +#: gitk:8420 msgid "Error creating patch:" msgstr "Fel vid generering av patch:" -#: gitk:7496 gitk:7595 gitk:7649 +#: gitk:8443 gitk:8549 gitk:8606 msgid "ID:" msgstr "Id:" -#: gitk:7505 +#: gitk:8452 msgid "Tag name:" msgstr "Taggnamn:" -#: gitk:7509 gitk:7659 +#: gitk:8456 gitk:8615 msgid "Create" msgstr "Skapa" -#: gitk:7524 +#: gitk:8473 msgid "No tag name specified" msgstr "Inget taggnamn angavs" -#: gitk:7528 +#: gitk:8477 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Taggen \"%s\" finns redan" -#: gitk:7534 +#: gitk:8483 msgid "Error creating tag:" msgstr "Fel vid skapande av tagg:" -#: gitk:7604 +#: gitk:8558 msgid "Command:" msgstr "Kommando:" -#: gitk:7612 +#: gitk:8566 msgid "Write" msgstr "Skriv" -#: gitk:7628 +#: gitk:8584 msgid "Error writing commit:" msgstr "Fel vid skrivning av incheckning:" -#: gitk:7654 +#: gitk:8611 msgid "Name:" msgstr "Namn:" -#: gitk:7674 +#: gitk:8634 msgid "Please specify a name for the new branch" msgstr "Ange ett namn för den nya grenen" -#: gitk:7703 +#: gitk:8639 +#, tcl-format +msgid "Branch '%s' already exists. Overwrite?" +msgstr "Grenen \"%s\" finns redan. Skriva över?" + +#: gitk:8705 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras " "på nytt?" -#: gitk:7708 +#: gitk:8710 msgid "Cherry-picking" msgstr "Plockar" -#: gitk:7720 +#: gitk:8719 +#, tcl-format +msgid "" +"Cherry-pick failed because of local changes to file '%s'.\n" +"Please commit, reset or stash your changes and try again." +msgstr "" +"Cherry-pick misslyckades på grund av lokala ändringar i filen \"%s\".\n" +"Checka in, återställ eller spara undan (stash) dina ändringar och försök " +"igen." + +#: gitk:8725 +msgid "" +"Cherry-pick failed because of merge conflict.\n" +"Do you wish to run git citool to resolve it?" +msgstr "" +"Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n" +"Vill du köra git citool för att lösa den?" + +#: gitk:8741 msgid "No changes committed" msgstr "Inga ändringar incheckade" -#: gitk:7745 +#: gitk:8767 msgid "Confirm reset" msgstr "Bekräfta återställning" -#: gitk:7747 +#: gitk:8769 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Återställa grenen %s till %s?" -#: gitk:7751 +#: gitk:8773 msgid "Reset type:" msgstr "Typ av återställning:" -#: gitk:7755 +#: gitk:8777 msgid "Soft: Leave working tree and index untouched" msgstr "Mjuk: Rör inte utcheckning och index" -#: gitk:7758 +#: gitk:8780 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Blandad: Rör inte utcheckning, återställ index" -#: gitk:7761 +#: gitk:8783 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -732,19 +1014,19 @@ msgstr "" "Hård: Återställ utcheckning och index\n" "(förkastar ALLA lokala ändringar)" -#: gitk:7777 +#: gitk:8800 msgid "Resetting" msgstr "Återställer" -#: gitk:7834 +#: gitk:8857 msgid "Checking out" msgstr "Checkar ut" -#: gitk:7885 +#: gitk:8910 msgid "Cannot delete the currently checked-out branch" msgstr "Kan inte ta bort den just nu utcheckade grenen" -#: gitk:7891 +#: gitk:8916 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -753,16 +1035,16 @@ msgstr "" "Incheckningarna på grenen %s existerar inte på någon annan gren.\n" "Vill du verkligen ta bort grenen %s?" -#: gitk:7922 +#: gitk:8947 #, tcl-format msgid "Tags and heads: %s" msgstr "Taggar och huvuden: %s" -#: gitk:7936 +#: gitk:8962 msgid "Filter" msgstr "Filter" -#: gitk:8230 +#: gitk:9257 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -770,129 +1052,161 @@ msgstr "" "Fel vid läsning av information om incheckningstopologi; information om " "grenar och föregående/senare taggar kommer inte vara komplett." -#: gitk:9216 +#: gitk:10243 msgid "Tag" msgstr "Tagg" -#: gitk:9216 +#: gitk:10243 msgid "Id" msgstr "Id" -#: gitk:9262 +#: gitk:10291 msgid "Gitk font chooser" msgstr "Teckensnittsväljare för Gitk" -#: gitk:9279 +#: gitk:10308 msgid "B" msgstr "F" -#: gitk:9282 +#: gitk:10311 msgid "I" msgstr "K" -#: gitk:9375 +#: gitk:10407 msgid "Gitk preferences" msgstr "Inställningar för Gitk" -#: gitk:9376 +#: gitk:10409 msgid "Commit list display options" msgstr "Alternativ för incheckningslistvy" -#: gitk:9379 +#: gitk:10412 msgid "Maximum graph width (lines)" msgstr "Maximal grafbredd (rader)" -#: gitk:9383 +#: gitk:10416 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximal grafbredd (% av ruta)" -#: gitk:9388 +#: gitk:10420 msgid "Show local changes" msgstr "Visa lokala ändringar" -#: gitk:9393 +#: gitk:10423 msgid "Auto-select SHA1" msgstr "Välj SHA1 automatiskt" -#: gitk:9398 +#: gitk:10427 msgid "Diff display options" msgstr "Alternativ för diffvy" -#: gitk:9400 +#: gitk:10429 msgid "Tab spacing" msgstr "Blanksteg för tabulatortecken" -#: gitk:9404 +#: gitk:10432 msgid "Display nearby tags" msgstr "Visa närliggande taggar" -#: gitk:9409 +#: gitk:10435 +msgid "Hide remote refs" +msgstr "Dölj fjärr-referenser" + +#: gitk:10438 msgid "Limit diffs to listed paths" msgstr "Begränsa diff till listade sökvägar" -#: gitk:9414 +#: gitk:10441 msgid "Support per-file encodings" -msgstr "" +msgstr "Stöd för filspecifika teckenkodningar" -#: gitk:9421 +#: gitk:10447 gitk:10512 msgid "External diff tool" msgstr "Externt diff-verktyg" -#: gitk:9423 +#: gitk:10449 msgid "Choose..." msgstr "Välj..." -#: gitk:9428 +#: gitk:10454 msgid "Colors: press to choose" msgstr "Färger: tryck för att välja" -#: gitk:9431 +#: gitk:10457 msgid "Background" msgstr "Bakgrund" -#: gitk:9435 +#: gitk:10458 gitk:10488 +msgid "background" +msgstr "bakgrund" + +#: gitk:10461 msgid "Foreground" msgstr "Förgrund" -#: gitk:9439 +#: gitk:10462 +msgid "foreground" +msgstr "förgrund" + +#: gitk:10465 msgid "Diff: old lines" msgstr "Diff: gamla rader" -#: gitk:9444 +#: gitk:10466 +msgid "diff old lines" +msgstr "diff gamla rader" + +#: gitk:10470 msgid "Diff: new lines" msgstr "Diff: nya rader" -#: gitk:9449 +#: gitk:10471 +msgid "diff new lines" +msgstr "diff nya rader" + +#: gitk:10475 msgid "Diff: hunk header" msgstr "Diff: delhuvud" -#: gitk:9455 +#: gitk:10477 +msgid "diff hunk header" +msgstr "diff delhuvud" + +#: gitk:10481 +msgid "Marked line bg" +msgstr "Markerad rad bakgrund" + +#: gitk:10483 +msgid "marked line background" +msgstr "markerad rad bakgrund" + +#: gitk:10487 msgid "Select bg" msgstr "Markerad bakgrund" -#: gitk:9459 +#: gitk:10491 msgid "Fonts: press to choose" msgstr "Teckensnitt: tryck för att välja" -#: gitk:9461 +#: gitk:10493 msgid "Main font" msgstr "Huvudteckensnitt" -#: gitk:9462 +#: gitk:10494 msgid "Diff display font" msgstr "Teckensnitt för diffvisning" -#: gitk:9463 +#: gitk:10495 msgid "User interface font" msgstr "Teckensnitt för användargränssnitt" -#: gitk:9488 +#: gitk:10522 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: välj färg för %s" -#: gitk:9934 +#: gitk:10973 msgid "" "Sorry, gitk cannot run with this version of Tcl/Tk.\n" " Gitk requires at least Tcl/Tk 8.4." @@ -900,24 +1214,33 @@ msgstr "" "Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n" " Gitk kräver åtminstone Tcl/Tk 8.4." -#: gitk:10047 +#: gitk:11101 msgid "Cannot find a git repository here." msgstr "Hittar inget gitk-arkiv här." -#: gitk:10051 +#: gitk:11105 #, tcl-format msgid "Cannot find the git directory \"%s\"." msgstr "Hittar inte git-katalogen \"%s\"." -#: gitk:10098 +#: gitk:11152 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Tvetydigt argument \"%s\": både revision och filnamn" -#: gitk:10110 +#: gitk:11164 msgid "Bad arguments to gitk:" msgstr "Felaktiga argument till gitk:" -#: gitk:10170 +#: gitk:11249 msgid "Command line" msgstr "Kommandorad" + +#~ msgid "Tag/Head %s is not known" +#~ msgstr "Tagg/huvud %s är okänt" + +#~ msgid "/\t\tMove to next find hit, or redo find" +#~ msgstr "/\t\tGå till nästa sökträff, eller sök på nytt" + +#~ msgid "Name" +#~ msgstr "Namn" diff --git a/lockfile.c b/lockfile.c index eb931eded5..6851fa55a5 100644 --- a/lockfile.c +++ b/lockfile.c @@ -155,18 +155,32 @@ static int lock_file(struct lock_file *lk, const char *path, int flags) return lk->fd; } - -NORETURN void unable_to_lock_index_die(const char *path, int err) +static char *unable_to_lock_message(const char *path, int err) { + struct strbuf buf = STRBUF_INIT; + if (err == EEXIST) { - die("Unable to create '%s.lock': %s.\n\n" + strbuf_addf(&buf, "Unable to create '%s.lock': %s.\n\n" "If no other git process is currently running, this probably means a\n" "git process crashed in this repository earlier. Make sure no other git\n" "process is running and remove the file manually to continue.", path, strerror(err)); - } else { - die("Unable to create '%s.lock': %s", path, strerror(err)); - } + } else + strbuf_addf(&buf, "Unable to create '%s.lock': %s", path, strerror(err)); + return strbuf_detach(&buf, NULL); +} + +int unable_to_lock_error(const char *path, int err) +{ + char *msg = unable_to_lock_message(path, err); + error("%s", msg); + free(msg); + return -1; +} + +NORETURN void unable_to_lock_index_die(const char *path, int err) +{ + die("%s", unable_to_lock_message(path, err)); } int hold_lock_file_for_update(struct lock_file *lk, const char *path, int flags) diff --git a/parse-options.c b/parse-options.c index a64a4d6ee2..f5594114ed 100644 --- a/parse-options.c +++ b/parse-options.c @@ -230,6 +230,9 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg, abbrev_flags = flags; continue; } + /* negation allowed? */ + if (options->flags & PARSE_OPT_NONEG) + continue; /* negated and abbreviated very much? */ if (!prefixcmp("no-", arg)) { flags |= OPT_UNSET; diff --git a/perl/Makefile b/perl/Makefile index e3dd1a5547..4ab21d61b8 100644 --- a/perl/Makefile +++ b/perl/Makefile @@ -29,11 +29,11 @@ $(makfile): ../GIT-CFLAGS Makefile '$(PERL_PATH_SQ)' -MError -e 'exit($$Error::VERSION < 0.15009)' || \ echo ' cp private-Error.pm blib/lib/Error.pm' >> $@ echo install: >> $@ - echo ' mkdir -p "$(instdir_SQ)"' >> $@ - echo ' $(RM) "$(instdir_SQ)/Git.pm"; cp Git.pm "$(instdir_SQ)"' >> $@ - echo ' $(RM) "$(instdir_SQ)/Error.pm"' >> $@ + echo ' mkdir -p "$$(DESTDIR)$(instdir_SQ)"' >> $@ + echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Git.pm"; cp Git.pm "$$(DESTDIR)$(instdir_SQ)"' >> $@ + echo ' $(RM) "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@ '$(PERL_PATH_SQ)' -MError -e 'exit($$Error::VERSION < 0.15009)' || \ - echo ' cp private-Error.pm "$(instdir_SQ)/Error.pm"' >> $@ + echo ' cp private-Error.pm "$$(DESTDIR)$(instdir_SQ)/Error.pm"' >> $@ echo instlibdir: >> $@ echo ' echo $(instdir_SQ)' >> $@ else diff --git a/perl/Makefile.PL b/perl/Makefile.PL index 320253eb8e..0b9deca2cc 100644 --- a/perl/Makefile.PL +++ b/perl/Makefile.PL @@ -5,6 +5,14 @@ sub MY::postamble { instlibdir: @echo '$(INSTALLSITELIB)' +ifneq (,$(DESTDIR)) +ifeq (0,$(shell expr '$(MM_VERSION)' '>' 6.10)) +$(error ExtUtils::MakeMaker version "$(MM_VERSION)" is older than 6.11 and so \ + is likely incompatible with the DESTDIR mechanism. Try setting \ + NO_PERL_MAKEMAKER=1 instead) +endif +endif + MAKE_FRAG } diff --git a/refs.c b/refs.c index 24865cf5a6..808f56bb27 100644 --- a/refs.c +++ b/refs.c @@ -972,8 +972,10 @@ static int repack_without_ref(const char *refname) if (!found) return 0; fd = hold_lock_file_for_update(&packlock, git_path("packed-refs"), 0); - if (fd < 0) + if (fd < 0) { + unable_to_lock_error(git_path("packed-refs"), errno); return error("cannot delete '%s' from packed refs", refname); + } for (list = packed_ref_list; list; list = list->next) { char line[PATH_MAX + 100]; diff --git a/t/t0006-date.sh b/t/t0006-date.sh index a4d8fa8fa1..75b02af86d 100755 --- a/t/t0006-date.sh +++ b/t/t0006-date.sh @@ -24,6 +24,7 @@ check_show 13000000 '5 months ago' check_show 37500000 '1 year, 2 months ago' check_show 55188000 '1 year, 9 months ago' check_show 630000000 '20 years ago' +check_show 31449600 '12 months ago' check_parse() { echo "$1 -> $2" >expect diff --git a/t/t0040-parse-options.sh b/t/t0040-parse-options.sh index bbc821ef97..3d450ed379 100755 --- a/t/t0040-parse-options.sh +++ b/t/t0040-parse-options.sh @@ -33,6 +33,8 @@ Magic arguments --quux means --quux -NUM set integer to NUM + same as -b + --ambiguous positive ambiguity + --no-ambiguous negative ambiguity Standard options --abbrev[=] use digits to display SHA-1s @@ -315,4 +317,22 @@ test_expect_success 'OPT_NUMBER_CALLBACK() works' ' test_cmp expect output ' +cat >expect <output 2>output.err && + test ! -s output.err && + test_cmp expect output +' + test_done diff --git a/t/t3202-show-branch-octopus.sh b/t/t3202-show-branch-octopus.sh index 7fe4a6ecb0..0a5d5e669f 100755 --- a/t/t3202-show-branch-octopus.sh +++ b/t/t3202-show-branch-octopus.sh @@ -56,4 +56,12 @@ test_expect_success 'show-branch with more than 8 branches' ' ' +test_expect_success 'show-branch with showbranch.default' ' + for i in $numbers; do + git config --add showbranch.default branch$i + done && + git show-branch >out && + test_cmp expect out +' + test_done diff --git a/t/t5531-deep-submodule-push.sh b/t/t5531-deep-submodule-push.sh old mode 100644 new mode 100755 diff --git a/t/t9501-gitweb-standalone-http-status.sh b/t/t9501-gitweb-standalone-http-status.sh old mode 100644 new mode 100755 diff --git a/templates/hooks--post-receive.sample b/templates/hooks--post-receive.sample index 18d2e0f727..7a83e17ab5 100755 --- a/templates/hooks--post-receive.sample +++ b/templates/hooks--post-receive.sample @@ -9,7 +9,7 @@ # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master # -# see contrib/hooks/ for an sample, or uncomment the next line and +# see contrib/hooks/ for a sample, or uncomment the next line and # rename the file to "post-receive". #. /usr/share/doc/git-core/contrib/hooks/post-receive-email diff --git a/templates/hooks--pre-commit.sample b/templates/hooks--pre-commit.sample index b11ad6a6fb..043970a751 100755 --- a/templates/hooks--pre-commit.sample +++ b/templates/hooks--pre-commit.sample @@ -14,15 +14,18 @@ allownonascii=$(git config hooks.allownonascii) # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. test "$(git diff --cached --name-only --diff-filter=A -z | LC_ALL=C tr -d '[ -~]\0')" then - echo "Error: Attempt to add a non-ascii filename." + echo "Error: Attempt to add a non-ascii file name." echo - echo "This can cause problems if you want to work together" - echo "with people on other platforms than you." + echo "This can cause problems if you want to work" + echo "with people on other platforms." echo - echo "To be portable it is adviseable to rename the file ..." + echo "To be portable it is advisable to rename the file ..." echo echo "If you know what you are doing you can disable this" echo "check using:" diff --git a/test-genrandom.c b/test-genrandom.c index 8ad276d062..b3c28d9a1c 100644 --- a/test-genrandom.c +++ b/test-genrandom.c @@ -4,8 +4,7 @@ * Copyright (C) 2007 by Nicolas Pitre, licensed under the GPL version 2. */ -#include -#include +#include "git-compat-util.h" int main(int argc, char *argv[]) { diff --git a/test-parse-options.c b/test-parse-options.c index efa734b42e..acd1a2ba70 100644 --- a/test-parse-options.c +++ b/test-parse-options.c @@ -8,6 +8,7 @@ static int abbrev = 7; static int verbose = 0, dry_run = 0, quiet = 0; static char *string = NULL; static char *file = NULL; +static int ambiguous; static int length_callback(const struct option *opt, const char *arg, int unset) { @@ -59,6 +60,10 @@ int main(int argc, const char **argv) number_callback), { OPTION_BOOLEAN, '+', NULL, &boolean, NULL, "same as -b", PARSE_OPT_NOARG | PARSE_OPT_NONEG | PARSE_OPT_NODASH }, + { OPTION_BOOLEAN, 0, "ambiguous", &ambiguous, NULL, + "positive ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG }, + { OPTION_BOOLEAN, 0, "no-ambiguous", &ambiguous, NULL, + "negative ambiguity", PARSE_OPT_NOARG | PARSE_OPT_NONEG }, OPT_GROUP("Standard options"), OPT__ABBREV(&abbrev), OPT__VERBOSE(&verbose), diff --git a/transport.c b/transport.c index 4cb807700a..644a30a0b2 100644 --- a/transport.c +++ b/transport.c @@ -869,8 +869,9 @@ int transport_set_option(struct transport *transport, int transport_push(struct transport *transport, int refspec_nr, const char **refspec, int flags, - int * nonfastforward) + int *nonfastforward) { + *nonfastforward = 0; verify_remote_names(refspec_nr, refspec); if (transport->push)