On Mon, Aug 17, 2009 at 4:08 PM, Johannes Schindelin<Johannes.Schindelin@xxxxxx> wrote: > Turns out that somebody on IRC had a problem that requires to have > sparse'd out files which _do_ have working directory copies. > > So just having the assume-changed bit may not be enough. > > The scenario is this: the repository contains a file that users are > supposed to change, but not commit to (only the super-intelligent inventor > of this scenario is allowed to). As this repository is originally a > subversion one, there is no problem: people just do not switch branches. > > But this guy uses git-svn, so he does switch branches, and to avoid > committing the file by mistake, he marked it assume-unchanged. Hmm.. never thought of this use before. If he does not want to commit by mistake, should he add to-be-committed changes to index and do "git commit" without "-a" (even better, do "git diff --cached" first)? > Only that a branch switch overwrites the local changes. I don't think branch switch overwrites changes in this case. Whenever Git is to touch worktree files, it ignores assumed-unchanged bit and does lstat() to make sure worktree files are up to date. > I suggested the use of the sparse feature, and mark this file (and this > file alone) as sparse'd-out. Sparse checkout only removes a file if its assume-unchanged bit changes from 0 to 1. If it's already 1, it does not care whether there is a corresponding file in worktree. So something like this should work: git checkout my-branch git update-index --assume-unchanged that-special-file echo that-special-file > .git/info/sparse # edit that-special-file git commit -a # do whatever you want, git pull/checkout/read-tree... won't touch that-special-file because it's assume-unchanged already Too subtle? Anyway I would not recommend this. the versions of that-special-file in worktree and and in index will diverse. When you unmark assume-unchanged (be it sparse checkout or plain assume-unchanged), you may have already forgot what changes you made to this file and "git diff" would not help. > Is this an intended usage scenario? Then we cannot reuse the > assume-changed bit [*1*]. It'd be great if people tell us all the scenarios they have. My use could be too limited. -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html