On Sat, Aug 2, 2008 at 6:32 PM, Alexander E Genaud <alex@xxxxxxxxxx> wrote: > git-pull sets write bit, git-push does not > > Hello, > > Background: I am using Git locally with ClearCase upstream. I > initialized a Git repository on top of a ClearCase snapshot view, > while my work branches are in a clone. As ClearCase is particular > about the write bit, I have come to depend on an undocumented feature > of Git. Namely, that git-push preserves read only permissions, while > git-pull sets modified files writable. > > Can git-push be relied upon to preserve the write bit (readonly)? Why > is git-pull different? Is it a side effect of the plumbing? Push and pull are not opposite operations: the opposite of push is fetch. This is because pull updates the working copy, while push does not (like fetch, it only modifies the ref). > > Thanks, > Alex > > http://genaud.net/2008/08/clearcase-globally-git-locally/ > > > Simplified case: > > echo -- > echo create a repo r1 with files A and B committed > echo -- > mkdir r1 > cd r1 > echo A > A > echo B > B > git init > git add . > git commit -m init > > echo -- > echo create an identical repo r2 whose files are readonly > echo -- > cp -r ../r1 ../r2 > chmod u-w ../r2/[AB] > > echo -- > echo push a modification of A from r1 to r2 > echo -- > echo AA > A > git commit -a -m modA > git push ../r2 > > echo -- > echo pull a modification of B from r1 to r2 > echo -- > echo BB > B > git commit -a -m modB > cd ../r2 > git pull ../r1 > > echo -- > echo notice that pushed A remains readonly > echo while pulled B has become writable > echo -- > ls -l > After running this: $ cat A A $ cat ../r1/A AA The working copy in r2 was not updated with the changes you pushed to it (both the content and the mode change). -- 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