Skip to content

Commit

Permalink
Merge branch 'cb/assume-unchanged-fix' into maint
Browse files Browse the repository at this point in the history
* cb/assume-unchanged-fix:
  Documentation: git-add does not update files marked "assume unchanged"
  do not overwrite files marked "assume unchanged"
  • Loading branch information
Junio C Hamano committed Jun 21, 2010
2 parents 1b9fa0e + ac472ba commit 443f26c
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 3 deletions.
2 changes: 0 additions & 2 deletions Documentation/git-update-index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,6 @@ OPTIONS
This option can be also used as a coarse file-level mechanism
to ignore uncommitted changes in tracked files (akin to what
`.gitignore` does for untracked files).
You should remember that an explicit 'git add' operation will
still cause the file to be refreshed from the working tree.
Git will fail (gracefully) in case it needs to modify this file
in the index e.g. when merging in a commit;
thus, in case the assumed-untracked file is changed upstream,
Expand Down
24 changes: 24 additions & 0 deletions t/t2106-update-index-assume-unchanged.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/sh

test_description='git update-index --assume-unchanged test.
'

. ./test-lib.sh

test_expect_success 'setup' \
': >file &&
git add file &&
git commit -m initial &&
git branch other &&
echo upstream >file &&
git add file &&
git commit -m upstream'

test_expect_success 'do not switch branches with dirty file' \
'git reset --hard &&
git checkout other &&
echo dirt >file &&
git update-index --assume-unchanged file &&
test_must_fail git checkout master'

test_done
2 changes: 1 addition & 1 deletion unpack-trees.c
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,7 @@ static int verify_uptodate_1(struct cache_entry *ce,
{
struct stat st;

if (o->index_only || (!ce_skip_worktree(ce) && (o->reset || ce_uptodate(ce))))
if (o->index_only || (!((ce->ce_flags & CE_VALID) || ce_skip_worktree(ce)) && (o->reset || ce_uptodate(ce))))
return 0;

if (!lstat(ce->name, &st)) {
Expand Down

0 comments on commit 443f26c

Please sign in to comment.