Merge remote-tracking branch 'upstream/devel' into devel

This commit is contained in:
Adam Roben 2012-05-10 11:05:41 -04:00
Родитель ee7cb9fb46 dca2a0d1cc
Коммит a2523de409
19 изменённых файлов: 404 добавлений и 31 удалений

38
README.md Normal file
Просмотреть файл

@ -0,0 +1,38 @@
# Build environment for Git for Windows
This is the build environment -- also known as msysGit -- for [Git for Windows](http://msysgit.googlecode.com/).
The easiest way is to install it via the [net installer](http://code.google.com/p/msysgit/downloads/list?q=netinstall). This installer will clone our [two](http://github.com/msysgit/msysgit) [repositories](http://github.com/msysgit/git), including all the necessary components to build Git for Windows, and perform an initial build.
# The build environment
msysGit brings a few components that are required to build Git:
- Bash, a Unix-type command-line shell. Quite a few components of Git itself are still shell scripts. Therefore, Bash is required to execute Git commands (see the output of `cd /git && git ls-files \*.sh` for a full list).
- the GNU C Compiler. Since we try to rely only on free software (apart from the Operating System, of course), we think it makes more sense to rely on GCC than on Visual Studio express. Also, it makes the maintenance burden lighter, as [upstream Git](http://github.com/gitster/git) also targets mainly GCC.
- GNU Make.
- Perl. Still required for a couple of Git components (see the output of `cd /git && git ls-files \*.perl`), most notably `git svn`.
- Tcl/Tk, a scripting language making it easy to implement cross-platform graphical user interfaces. We need this for `gitk` and `git gui`.
- [cURL](http://curl.haxx.se), a library implementing HTTP and FTP transport.
- many more libraries.
- some Unix programs required by the shell scripts in Git.
# The relationship between _msysGit_ and _Git for Windows_
[Git for Windows](http://code.google.com/p/msysgit/downloads/list?q=full+installer+for+official+git) is the software package that installs a minimal environment to run Git on Windows. It comes with a Bash (a Unix-type shell), with a Perl interpreter and with the Git executable and its dependencies.
On the other hand, msysGit is the software package installing the _build environment_ that can build Git for Windows. The easiest way is to install it via the [net installer](http://code.google.com/p/msysgit/downloads/list?q=netinstall).
# The difference between MSys and MinGW
The [MinGW project](http://mingw.org/)'s goal is to provide a way to compile native Windows binaries with no POSIX layer using the GNU C Compiler.
However, at least the Bash needs a POSIX layer (most notably due to the absence of the `fork()` call on Windows). Therefore, MSys (the _minimal system_) is thrown in, offering the minimal system necessary to offer Bash (and Perl) functionality on Windows.
Consequently, MSys ships with a POSIX layer (based on an old version of Cygwin) that is only used by the Bash and Perl, but not by anything compiled within that environment.
# Further information
For more information and documentation, please have a look and enhance our [Wiki](https://github.com/msysgit/msysgit/wiki).
For code contributions and discussions, please see our [mailing list](http://groups.google.com/group/msysgit).

Просмотреть файл

@ -3,12 +3,16 @@
URL="$1"
case "$URL" in
http://mid.gmane.org*)
TMP=.git/apply.tmp
curl -D $TMP "$URL" > /dev/null
URL=$(sed -n 's/^Location: //p' < $TMP | tr -d '\r\n');;
http://thread.*) URL=http://article.${URL#http://thread.};;
http://*|article.gmane.org*) ;;
*@*)
TMP=.git/apply.tmp
curl -D $TMP http://mid.gmane.org/$1 > /dev/null
URL=$(sed -n 's/^Location: //p' < $TMP);;
URL=$(sed -n 's/^Location: //p' < $TMP | tr -d '\r\n');;
*) URL=http://article.gmane.org/gmane.comp.version-control.msysgit/$1;;
esac

Просмотреть файл

@ -37,6 +37,13 @@ t)
;;
esac
to_ignore="$(git ls-files --other --exclude-standard msvcgit msvc-build.cmd)"
test -z "$to_ignore" || {
mkdir -p .git/info &&
echo "$to_ignore" |
sed 's/^/\//' >> .git/info/exclude
} || exit
test -d msvcgit || git clone git://repo.or.cz/msvcgit.git
vsvars=

74
bin/show-github-usage.sh Executable file
Просмотреть файл

@ -0,0 +1,74 @@
#!/bin/sh
USAGE="$0"' <options>...
Get the amount of kB used by the msysGit organization
Options:
--user <github-account> (required)
'
user=
repository=
while test $# -gt 0
do
case "$1" in
--user)
test $# -gt 1 || {
echo "Option '$1' needs a value" >&2
exit 1
}
eval ${1#--}="$2"
shift
;;
--user=*)
pair="${1#--}"
eval ${pair%%=*}="${pair#*=}"
;;
--help)
echo "$USAGE"
exit 1
;;
*)
break;
esac
shift
done
test -z "$user" &&
user="$(grep -A2 -i '^machine *api.github.com' < "$HOME/.netrc" 2> /dev/null |
sed -n 's|login *||pi')"
test -n "$user" || {
echo "$USAGE"
exit 1
}
get_password () { # args: user host
# try $HOME/.netrc; ignore <user> parameter first
password="$(grep -A2 -i "^machine *$2" < $HOME/.netrc 2> /dev/null |
sed -n 's|^password *||p')"
test -z "$password" &&
password="$(git gui--askpass "Password for $1@$2")"
echo "$password"
}
json_get () { # args: key json
echo "$2" |
sed -n -s \
-e "s|^ *\"$1\" *: *\"\(.*\)\",\?$|\1|p" \
-e "s|^ *\"$1\" *: *\([^\"]*[^\",]\),\?$|\1|p"
}
password="$(get_password "$user" "api.github.com")"
test -n "$password" || exit
# get disk usage
json="$(curl -s \
-XPATCH \
-i \
-d '{}' \
-u "$user:$password" \
https://api.github.com/orgs/msysgit)"
echo "Disk usage: $(json_get disk_usage "$json")kB"

167
bin/upload-to-github.sh Executable file
Просмотреть файл

@ -0,0 +1,167 @@
#!/bin/sh
# Written with a lot of assistance by Scott Chacon
USAGE="$0"' <options>... <filepath>
Options:
--description <download-description> (required)
--user <github-account> (required)
--repository <github-repository> (required)
'
description=
user=
repository=
filepath=
filesize=
basename=
dryrun=
while test $# -gt 0
do
case "$1" in
--description|--user|--repository)
test $# -gt 1 || {
echo "Option '$1' needs a value" >&2
exit 1
}
eval ${1#--}="\"$2\""
shift
;;
--description=*|--user=*|--repository=*)
pair="${1#--}"
eval ${pair%%=*}="${pair#*=}"
;;
--dry-run)
dryrun=YouGotThatRight
;;
--help)
echo "$USAGE"
exit 1
;;
*)
break;
esac
shift
done
if test $# -ne 1 || ! test -f "$1"
then
echo "$USAGE"
exit 1
fi
filepath="$1"
filesize="$(stat -c %s "$filepath")"
basename="$(basename "$filepath")"
# extract 'for version <version>' from basename
for_version=${basename%-preview*}
for_version=${for_version##*Git-}
for_version=${for_version##*install-}
for_version="for official Git for Windows $for_version"
case "$basename" in
Git-*)
description="${description:-Full installer $for_version}"
repository=${repository:-msysgit/git}
;;
PortableGit-*)
description="${description:-Portable application $for_version}"
repository=${repository:-msysgit/git}
;;
msysGit-netinstall-*)
description="${description:-Net installer if you want to hack on Git}"
repository=${repository:-msysgit/git}
;;
msysGit-fullinstall-*)
description="${description:-Full installer (self-contained) if you want to hack on Git}"
repository=${repository:-msysgit/git}
;;
esac
test -z "$user" &&
user="$(grep -A2 -i '^machine *api.github.com' < "$HOME/.netrc" 2> /dev/null |
sed -n 's|login *||pi')"
if test -z "$description" || test -z "$user" || test -z "$repository"
then
echo "$USAGE"
exit 1
fi
get_password () { # args: user host
# try $HOME/.netrc; ignore <user> parameter first
password="$(grep -A2 -i "^machine *$2" < $HOME/.netrc 2> /dev/null |
sed -n 's|^password *||p')"
test -z "$password" &&
password="$(git gui--askpass "Password for $1@$2")"
echo "$password"
}
json_get () { # args: key json
echo "$2" |
sed -n -s "s|^ *\"$1\" *: *\"\(.*\)\",\?$|\1|p"
}
json_wrap () { # args: key1, value1, [key2, value2], ...
printf '{'
sep=
while test $# -gt 1
do
printf '%s"%s":"%s"' "$sep" "$1" "$2"
sep=,
shift
shift
done
printf '}'
}
windowsfilepath="$(cd "$(dirname "$filepath")" && pwd -W)\\$basename"
test -n "$dryrun" && {
cat << EOF
basename: $basename
size: $filesize
description: $description
user: $user
repository: $repository
EOF
exit 0
}
password="$(get_password "$user" "api.github.com")"
test -n "$password" || exit
# get ticket
json="$(curl -XPOST \
-d "$(json_wrap \
name "$basename" \
size "$filesize" \
description "$description")" \
-u "$user:$password" \
https://api.github.com/repos/$repository/downloads)"
# upload for real, using S3
result="$(curl \
-F key="$(json_get path "$json")" \
-F acl="$(json_get acl "$json")" \
-F success_action_status=201 \
-F Filename="$(json_get name "$json")" \
-F AWSAccessKeyId="$(json_get accesskeyid "$json")" \
-F Policy="$(json_get policy "$json")" \
-F Signature="$(json_get signature "$json")" \
-F Content-Type="$(json_get mime_type "$json")" \
-F file=@"$windowsfilepath" \
"$(json_get s3_url "$json")")"
echo "$result"
# Verify that the upload was successful
case "$result" in
*"<Location>"*"</Location>"*)
echo "Success!"
;;
*)
exit 1
;;
esac

Просмотреть файл

@ -0,0 +1,46 @@
#!/bin/sh
# This script tries to find out what made your repository so large.
# It sorts the loose and packed objects by size (for packed objects, we look
# at the size in the pack) and shows the largest ten.
die () {
echo "$*" >&2
exit 1
}
identify_object () {
LINES="$(git log --root --raw --abbrev=40 --all --format="commit %H" |
grep -e '^commit' -e "^:[^ ]* [^ ]* [^ ]* $1" |
grep -m1 -B1 "^:[^ ]* [^ ]* [^ ]* $1")"
if test -n "$LINES"
then
COMMIT="$(git name-rev $(echo "$LINES" |
sed -n 's/commit //p') |
sed 's/^[^ ]* //')"
PATH="$(echo "$LINES" | sed -n 's/^.* //p')"
printf "'%s:%s'" $COMMIT "$PATH"
fi
}
N=10
test $# -gt 0 && N=$1
GIT_DIR="$(git rev-parse --git-dir)" || die "No repository found"
OBJECT_LIST="$( (cd "$GIT_DIR" &&
ls -l objects/??/* |
sed 's/^\([^ ]* *\)\{4\}\([^ ]*\).* objects\/\(..\)\/\(.\{38\}\)$/\2 \3\4/' &&
for pack in "$(ls objects/pack/*.pack 2> /dev/null)"
do
git verify-pack -v "$pack" 2>&1 |
sed -n 's/^\([^ ]\{40\}\) *[^ ]* *[^ ]* *\([1-9][0-9]*\).*$/\2 \1/p'
done) |
sort -n -r |
uniq |
head -n "$N")"
echo "$OBJECT_LIST" |
while read size sha1
do
echo $size $sha1 "$(identify_object $sha1)"
done

Просмотреть файл

@ -10,6 +10,7 @@
@if not exist "%HOME%" @set HOME=%USERPROFILE%
@set PLINK_PROTOCOL=ssh
@if not defined TERM set TERM=msys
@if "%1"=="gui" @goto gui

@ -1 +1 @@
Subproject commit 12bf4714f640e04427236d38d4760ec79d925334
Subproject commit bec9cd112237778ebeb7e86381316bf62885af66

Просмотреть файл

@ -28,12 +28,13 @@ set show-all-if-ambiguous off
# MSYSTEM is emacs based
$if mode=emacs
# Common to Console & RXVT
"\C-?": backward-kill-line # Ctrl-BackSpace
"\e[2~": paste-from-clipboard # "Ins. Key"
"\e[5~": beginning-of-history # Page up
"\e[6~": end-of-history # Page down
$if term=msys # RXVT
$if term=xterm # RXVT
"\C-h": backward-kill-line
"\C-?": backward-delete-char
"\e[7~": beginning-of-line # Home Key
"\e[8~": end-of-line # End Key
"\e[11~": display-shell-version # F1
@ -47,8 +48,7 @@ $if mode=emacs
"\e[20~": "Function Key 9"
"\e[21~": "Function Key 10"
$else
# Eh, normal Console is not really cygwin anymore, is it? Using 'else' instead. -mstormo
# $if term=cygwin # Console
"\C-?": backward-kill-line # Ctrl-BackSpace
"\e[1~": beginning-of-line # Home Key
"\e[4~": end-of-line # End Key
"\e[17~": "Function Key 6"

Просмотреть файл

@ -69,7 +69,7 @@ export PATH="$HOME/bin:$PATH"
export GNUPGHOME=~/.gnupg
if [ -z "$MAGIC" ]; then
magicfile=$(cd / && pwd -W)'/mingw/share/misc/magic'
magicfile=$(cd / && pwd -W)'/mingw/share/misc/magic.mgc'
test -f "$magicfile" && export MAGIC="$magicfile"
fi

2
git

@ -1 +1 @@
Subproject commit e92cda2234d42e19970eb03f97064d8c1a7f0070
Subproject commit aa4aafb7dae7b7838af22136214b323914c5629d

Просмотреть файл

@ -1,7 +1,7 @@
{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}{\f1\fnil\fcharset0 Arial;}{\f2\fnil\fcharset2 Symbol;}}
{\colortbl ;\red0\green0\blue0;\red0\green0\blue255;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\cf1\lang1033\b\f0\fs32 Git Release Notes (Git-1.7.9-preview20120201)\b0\fs20\par
Last update: 1 February 2012\par
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\cf1\lang1033\b\f0\fs32 Git Release Notes (Git-1.7.10-preview20120409)\b0\fs20\par
Last update: 9 April 2012\par
\par
\b\fs24 Introduction\b0\fs20\par
\par
@ -9,7 +9,7 @@ These release notes describe issues specific to the Git for Windows release.\par
\par
General release notes covering the history of the core git commands are included in the subdirectory doc/git/html of the installation directory. Look for files starting with RelNotes.\par
\par
See \cf0{\field{\*\fldinst{HYPERLINK "http://git-scm.com/"}}{\fldrslt{\ul\cf2 http://git-scm.com/}}}\cf1\f0\fs20 for further details about Git including ports to other operating systems. Git for Windows is hosted at \cf0{\field{\*\fldinst{HYPERLINK "http://msysgit.googlecode.com/"}}{\fldrslt{\ul\cf2 http://msysgit.googlecode.com/}}}\cf1\f0\fs20 .\par
See \cf0{\field{\*\fldinst{HYPERLINK "http://git-scm.com/"}}{\fldrslt{\ul\cf2 http://git-scm.com/}}}\cf1\f0\fs20 for further details about Git including ports to other operating systems. Git for Windows is hosted at \cf0{\field{\*\fldinst{HYPERLINK "http://msysgit.github.com/"}}{\fldrslt{\ul\cf2 http://msysgit.github.com/}}}\cf1\f0\fs20 .\par
\par
\b\fs24 Known issues\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-288\li432\b0\fs20 Some commands are not yet supported on Windows and excluded from the installation; namely: git archimport, git cvsexportcommit, git cvsimport, git cvsserver, git instaweb, git shell.\par
@ -17,10 +17,24 @@ See \cf0{\field{\*\fldinst{HYPERLINK "http://git-scm.com/"}}{\fldrslt{\ul\cf2 ht
{\pntext\f2\'B7\tab}The Quick Launch icon will only be installed for the user running setup (typically the Administrator). This is a technical restriction and will not change.\par
{\pntext\f2\'B7\tab}curl uses $HOME/_netrc instead of $HOME/.netrc.\par
{\pntext\f2\'B7\tab}If you want to specify a different location for --upload-pack, you have to start the absolute path with two slashes. Otherwise MSys will mangle the path.\par
{\pntext\f2\'B7\tab}git and bash have serious problems with non-ASCII file names (Issue 80, 159).\par
{\pntext\f2\'B7\tab}If configured to use plink, you will have to connect with putty first and accept the host key.\par
{\pntext\f2\'B7\tab}As merge tools are executed using the MSys bash, options starting with "/" need to be handled specially: MSys would interpret that as a POSIX path, so you need to double the slash (Issue 226). Example: instead of "/base", say "//base". Also, extra care has to be paid to pass Windows programs Windows paths, as they have no clue about MSys style POSIX paths -- You can use something like $(cmd //c echo "$POSIXPATH").\par
{\pntext\f2\'B7\tab}Unless you define the environment variable MSYS_WATCH_FSTAB (the value must be a non-empty string), Git Bash will not see any drives that have been attached after bash was started. This is a workaround to help the speed of cmd scripts using parts of Git that are implemented as shell scripts.\par
{\pntext\f2\'B7\tab}Unless you define the environment variable MSYS_WATCH_FSTAB (the value must be a non-empty string), Git Bash will not see any drives that have been attached after bash was started. This is a workaround to help the speed of cmd scripts using parts of Git that are implemented as shell scripts.\line\line\pard\li144 Should you encounter other problems, please search the mailing list first (\cf0{\field{\*\fldinst{HYPERLINK "http://groups.google.com/group/msysgit"}}{\fldrslt{\ul\cf2 http://groups.google.com/group/msysgit}}}\cf1\f0\fs20 ) and ask there if you do not find anything.\par
\pard\b\fs24\par
Changes since Git-1.7.9-preview20120201\par
\par
\i\fs20 New Features\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-288\li432\b0\i0 Comes with Git 1.7.10 plus Windows specific patches.\par
{\pntext\f2\'B7\tab}UTF-8 file name support.\par
\pard\b\i\par
Bugfixes\par
\pard{\pntext\f2\'B7\tab}{\*\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}\fi-288\li432\b0\i0 Please refer to the release notes for official Git 1.7.10.\par
{\pntext\f2\'B7\tab}Clarifications in the installer.\par
{\pntext\f2\'B7\tab}Console output is now even thread-safer.\par
{\pntext\f2\'B7\tab}Better support for foreign remotes (Mercurial remotes are disabled for now, due to lack of a Python version that can be compiled within the development environment).\par
{\pntext\f2\'B7\tab}Git Cheetah no longer writes big log files directly to C:\\.\par
{\pntext\f2\'B7\tab}Development environment: enhancements in the script to make a 64-bit setup.\par
{\pntext\f2\'B7\tab}Development environment: enhancements to the 64-bit Cheetah build.\par
\pard\b\fs24\par
Changes since Git-1.7.8-preview20111206\par
\par

Просмотреть файл

@ -48,10 +48,10 @@ Name: icons; Description: Additional icons; Types: custom
Name: icons\quicklaunch; Description: In the Quick Launch; Types: custom
Name: icons\desktop; Description: On the Desktop; Types: custom
Name: ext; Description: Windows Explorer integration; Types: custom
Name: ext\reg; Description: Context menu entries; Flags: exclusive; Types: custom
Name: ext\reg; Description: Simple context menu (Registry based); Flags: exclusive; Types: custom
Name: ext\reg\shellhere; Description: Git Bash Here; Types: custom
Name: ext\reg\guihere; Description: Git GUI Here; Types: custom
Name: ext\cheetah; Description: git-cheetah shell extension; Flags: exclusive; Types: custom
Name: ext\cheetah; Description: Advanced context menu (git-cheetah plugin); Flags: exclusive; Types: custom
Name: assoc; Description: Associate .git* configuration files with the default text editor; Types: custom
Name: assoc_sh; Description: Associate .sh files to be run with Bash; Types: custom
Name: consolefont; Description: {#COMP_CONSOLE_FONT}; Types: custom
@ -587,7 +587,7 @@ begin
'this is the recommended setting on Windows ("core.autocrlf" is set to "true").';
Left:=ScaleX(28);
Top:=ScaleY(32);
Width:=ScaleX(372);
Width:=ScaleX(380);
Height:=ScaleY(47);
end;
@ -613,7 +613,7 @@ begin
'this is the recommended setting on Unix ("core.autocrlf" is set to "input").';
Left:=ScaleX(28);
Top:=ScaleY(104);
Width:=ScaleX(372);
Width:=ScaleX(380);
Height:=ScaleY(47);
end;
@ -639,7 +639,7 @@ begin
'projects ("core.autocrlf" is set to "false").';
Left:=ScaleX(28);
Top:=ScaleY(176);
Width:=ScaleX(372);
Width:=ScaleX(380);
Height:=ScaleY(47);
end;

Просмотреть файл

@ -52,13 +52,19 @@ test -z "$force" && {
}
create_msysgit_tag () {
i=0 &&
tag=$(git describe HEAD | cut -d- -f1) &&
tag=${tag%.msysgit.*} &&
while ! git tag -a -m "Git for Windows $1" $tag.msysgit.$i
do
i=$(($i+1))
done
if tag=$(git describe --exact-match --match "*.msysgit.*" HEAD 2> /dev/null)
then
echo "Using existing tag $tag"
else
i=0 &&
tag=$(git describe HEAD | cut -d- -f1) &&
tag=${tag%.msysgit.*} &&
while ! git tag -a -m "Git for Windows $1" $tag.msysgit.$i 2> /dev/null
do
i=$(($i+1))
done &&
echo "Created tag $tag.msysgit.$i"
fi
}
# compile everything needed for standard setup

Просмотреть файл

@ -34,6 +34,10 @@ test 0 = "$(cat /tmp/exitstatus)" &&
strip bin/*.exe libexec/git-core/*.exe &&
mkdir etc &&
cp "$SHARE"/gitconfig etc/ &&
if test -d /etc/profile.d
then
cp -R /etc/profile.d ./
fi &&
sed -e "s|@@MSYSGITBRANCH@@|$MSYSGITBRANCH|g" \
-e "s|@@FOURMSYSGITBRANCH@@|$FOURMSYSGITBRANCH|g" \
< "$SHARE"/setup-msysgit.sh > setup-msysgit.sh &&

Просмотреть файл

@ -168,3 +168,15 @@ git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*' &&
git fetch origin &&
git-checkout -l -f -q -b master origin/master ||
error "Could not update the submodule src/git-cheetah!"
# Copy profile.d/*.sh if there is any
cd ../.. &&
if test -d "$INSTALL_PATH"/installer-tmp/profile.d
then
mkdir -p etc/profile.d &&
for file in "$INSTALL_PATH"/installer-tmp/profile.d/*.sh
do
cp "$file" etc/profile.d/
done
fi

Просмотреть файл

@ -9,7 +9,7 @@ export GIT_SKIP_TESTS='
export NO_SVN_TESTS=t
case " $*" in
*' -j'*) ;;
*) PARALLEL_MAKE=-j5;;
*) PARALLEL_MAKE=-j15;;
esac
generate_skip_list () {
@ -75,8 +75,8 @@ echo make $PARALLEL_MAKE &&
"*** t"*)
TEST_NAME=$(get_test_name "$line")
CURRENT_TESTS="$CURRENT_TESTS $TEST_NAME"
printf "Currently running $(echo "$CURRENT_TESTS" |
sed 's/-[^ ]*//g')\\r"
printf "$(echo "$CURRENT_TESTS" |
sed 's/t\([0-9]*\)-[^ ]*/\1/g')\\r"
;;
'* passed'*|'# passed'*)
get_finished_tests

Просмотреть файл

@ -17,8 +17,8 @@ set statusline=%<%F%h%m%r\ [%{&ff}]\ (%{strftime(\"%H:%M\ %d/%m/%Y\",getftime(ex
"------------------------------------------------------------------------------
" Only do this part when compiled with support for autocommands.
if has("autocmd")
"Use UTF-8 for commit messages
autocmd BufReadPre COMMIT_EDITMSG setlocal fileencodings=utf-8
"Set UTF-8 as the default encoding for commit messages
autocmd BufReadPre COMMIT_EDITMSG,git-rebase-todo setlocal fileencodings=utf-8
"Remember the positions in files with some git-specific exceptions"
autocmd BufReadPost *

@ -1 +1 @@
Subproject commit a764b6cff2c7a3e195d7a029b7635d3aaabe9c7d
Subproject commit 09a4016fb6172b9830550d62964978efaaf12ce8