Copying from a Time Machine backup…
So…through some git experimentation trying to erase the history of a file, I
committed and pushed to a local repository, which turned out not to be my
intention. Instead of figuring out how to fix it the git way, I thought I’d
just copy yesterday’s Time Machine backup of the repository. Instead of using
Time Machine app, I mounted the backup disk, and cp -R‘d the directory. A
ls-l told me permissions and user:group ownership were correct…though I did
notice an @ tacked onto the end drwxr-xr-x@…
Insufficient Permission?
Returning to the project a few days later, git pushing a new tag to the local repository didn’t work, with a permission error:
insufficient permission for adding an object to repository database etc.
WTF, permissions and ownership are right. Google, Google, git, permissions,
etc. and no luck. Then, brilliant insight - don’t ignore the information
presented to me. What exactly does the @ on the end of drwxr-xr-x@ mean
anyway?
OS X Extended Attributes
Copying directly from the Time Machine backup also copied extended attributes and ACLs, which I definitely didn’t want. The command
1
| |
told me things like com.apple.metadata:_kTimeMachineOldestSnapshot and
com.apple.metadata:_kTimeMachineNewestSnapshot were attached to the directory
and it’s files. To remove:
1 2 | |
To learn more about xattr:
1
| |
OS X ACLs
Now ls -l gave me drwxr-xr-x+, with the + meaning the directory has ACL
(access control lists) attached to it. Needless to say, I still couldn’t push
to the repository, even though the standard user:group permissions said I
could. To remove the ACL restrictions:
1
| |
Finally, ls -l returns plain old drwxr-xr-x, and I could push to my
repository. What a wonderful waste of time!