Skip to content

Commit

Permalink
Merge branch 'maint'
Browse files Browse the repository at this point in the history
* maint:
  receive-pack: do not insist on fast-forward outside refs/heads/
  git-mv: search more precisely for source directory in index

Conflicts:

	receive-pack.c
  • Loading branch information
Junio C Hamano committed Dec 5, 2006
2 parents 4cd7535 + 562cefb commit ba988a8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 5 deletions.
11 changes: 7 additions & 4 deletions builtin-mv.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,21 +146,24 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
&& lstat(dst, &st) == 0)
bad = "cannot move directory over file";
else if (src_is_dir) {
const char *src_w_slash = add_slash(src);
int len_w_slash = length + 1;
int first, last;

modes[i] = WORKING_DIRECTORY;

first = cache_name_pos(src, length);
first = cache_name_pos(src_w_slash, len_w_slash);
if (first >= 0)
die ("Huh? %s/ is in index?", src);
die ("Huh? %.*s is in index?",
len_w_slash, src_w_slash);

first = -1 - first;
for (last = first; last < active_nr; last++) {
const char *path = active_cache[last]->name;
if (strncmp(path, src, length)
|| path[length] != '/')
if (strncmp(path, src_w_slash, len_w_slash))
break;
}
free((char *)src_w_slash);

if (last - first < 1)
bad = "source directory is empty";
Expand Down
3 changes: 2 additions & 1 deletion receive-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@ static int update(struct command *cmd)
"but I can't find it!", new_hex);
}
if (deny_non_fast_forwards && !is_null_sha1(new_sha1) &&
!is_null_sha1(old_sha1)) {
!is_null_sha1(old_sha1) &&
!strncmp(name, "refs/heads/", 11)) {
struct commit *old_commit, *new_commit;
struct commit_list *bases, *ent;

Expand Down
13 changes: 13 additions & 0 deletions t/t7001-mv.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,17 @@ test_expect_success "Michael Cassar's test case" '
}
'

rm -fr papers partA path?

test_expect_success "Sergey Vlasov's test case" '
rm -fr .git &&
git init-db &&
mkdir ab &&
date >ab.c &&
date >ab/d &&
git add ab.c ab &&
git commit -m 'initial' &&
git mv ab a
'

test_done

0 comments on commit ba988a8

Please sign in to comment.