mirror of
https://github.com/git/git.git
synced 2026-01-19 07:04:49 +00:00
Merge branch 'sp/void' into next
* sp/void: Allow git-checkout when on a non-existant branch. gitweb: Decode long title for link tooltips git-svn: Fix fetch --no-ignore-externals with GIT_SVN_NO_LIB=1 Ignore executable bit when adding files if filemode=0.
This commit is contained in:
@@ -112,11 +112,13 @@ static int add_file_to_cache(const char *path)
|
||||
ce->ce_mode = create_ce_mode(st.st_mode);
|
||||
if (!trust_executable_bit) {
|
||||
/* If there is an existing entry, pick the mode bits
|
||||
* from it.
|
||||
* from it, otherwise force to 644.
|
||||
*/
|
||||
int pos = cache_name_pos(path, namelen);
|
||||
if (0 <= pos)
|
||||
ce->ce_mode = active_cache[pos]->ce_mode;
|
||||
else
|
||||
ce->ce_mode = create_ce_mode(S_IFREG | 0644);
|
||||
}
|
||||
|
||||
if (index_path(ce->sha1, path, &st, !info_only))
|
||||
|
||||
@@ -4,8 +4,8 @@ USAGE='[-f] [-b <new_branch>] [-m] [<branch>] [<paths>...]'
|
||||
SUBDIRECTORY_OK=Sometimes
|
||||
. git-sh-setup
|
||||
|
||||
old=$(git-rev-parse HEAD)
|
||||
old_name=HEAD
|
||||
old=$(git-rev-parse --verify $old_name 2>/dev/null)
|
||||
new=
|
||||
new_name=
|
||||
force=
|
||||
@@ -140,6 +140,13 @@ fi
|
||||
die "git checkout: to checkout the requested commit you need to specify
|
||||
a name for a new branch which is created and switched to"
|
||||
|
||||
if [ "X$old" = X ]
|
||||
then
|
||||
echo "warning: You do not appear to currently be on a branch." >&2
|
||||
echo "warning: Forcing checkout of $new_name." >&2
|
||||
force=1
|
||||
fi
|
||||
|
||||
if [ "$force" ]
|
||||
then
|
||||
git-read-tree --reset -u $new
|
||||
|
||||
@@ -1247,6 +1247,7 @@ sub assert_svn_wc_clean {
|
||||
}
|
||||
my @status = grep(!/^Performing status on external/,(`svn status`));
|
||||
@status = grep(!/^\s*$/,@status);
|
||||
@status = grep(!/^X/,@status) if $_no_ignore_ext;
|
||||
if (scalar @status) {
|
||||
print STDERR "Tree ($SVN_WC) is not clean:\n";
|
||||
print STDERR $_ foreach @status;
|
||||
|
||||
@@ -657,7 +657,7 @@ sub format_subject_html {
|
||||
|
||||
if (length($short) < length($long)) {
|
||||
return $cgi->a({-href => $href, -class => "list subject",
|
||||
-title => $long},
|
||||
-title => decode("utf8", $long, Encode::FB_DEFAULT)},
|
||||
esc_html($short) . $extra);
|
||||
} else {
|
||||
return $cgi->a({-href => $href, -class => "list subject"},
|
||||
|
||||
@@ -347,11 +347,13 @@ int add_file_to_index(const char *path, int verbose)
|
||||
ce->ce_mode = create_ce_mode(st.st_mode);
|
||||
if (!trust_executable_bit) {
|
||||
/* If there is an existing entry, pick the mode bits
|
||||
* from it.
|
||||
* from it, otherwise force to 644.
|
||||
*/
|
||||
int pos = cache_name_pos(path, namelen);
|
||||
if (pos >= 0)
|
||||
ce->ce_mode = active_cache[pos]->ce_mode;
|
||||
else
|
||||
ce->ce_mode = create_ce_mode(S_IFREG | 0644);
|
||||
}
|
||||
|
||||
if (index_path(ce->sha1, path, &st, 1))
|
||||
|
||||
@@ -19,4 +19,26 @@ test_expect_success \
|
||||
'Test that "git-add -- -q" works' \
|
||||
'touch -- -q && git-add -- -q'
|
||||
|
||||
test_expect_success \
|
||||
'git-add: Test that executable bit is not used if core.filemode=0' \
|
||||
'git repo-config core.filemode 0 &&
|
||||
echo foo >xfoo1 &&
|
||||
chmod 755 xfoo1 &&
|
||||
git-add xfoo1 &&
|
||||
case "`git-ls-files --stage xfoo1`" in
|
||||
100644" "*xfoo1) echo ok;;
|
||||
*) echo fail; git-ls-files --stage xfoo1; exit 1;;
|
||||
esac'
|
||||
|
||||
test_expect_success \
|
||||
'git-update-index --add: Test that executable bit is not used...' \
|
||||
'git repo-config core.filemode 0 &&
|
||||
echo foo >xfoo2 &&
|
||||
chmod 755 xfoo2 &&
|
||||
git-add xfoo2 &&
|
||||
case "`git-ls-files --stage xfoo2`" in
|
||||
100644" "*xfoo2) echo ok;;
|
||||
*) echo fail; git-ls-files --stage xfoo2; exit 1;;
|
||||
esac'
|
||||
|
||||
test_done
|
||||
|
||||
@@ -31,6 +31,15 @@ test_expect_success setup '
|
||||
git checkout master
|
||||
'
|
||||
|
||||
test_expect_success "checkout from non-existing branch" '
|
||||
|
||||
git checkout -b delete-me master &&
|
||||
rm .git/refs/heads/delete-me &&
|
||||
test refs/heads/delete-me = "$(git symbolic-ref HEAD)" &&
|
||||
git checkout master &&
|
||||
test refs/heads/master = "$(git symbolic-ref HEAD)"
|
||||
'
|
||||
|
||||
test_expect_success "checkout with dirty tree without -m" '
|
||||
|
||||
fill 0 1 2 3 4 5 >one &&
|
||||
|
||||
Reference in New Issue
Block a user