util: improved the check for the existence of the 'buffer' builtin
2to3 is unable to translate '__builtin__' calls to 'builtins' when
hasattr is used (as in hasattr(__builtin__, buffer)). Translating the
check to the format
try:
whatever
except NameError
# define whatever
__builtin__.whatever = whatever
is a correct way of checking for the name and has the benefit of being
translated by 2to3. This patch implements the same idea for the
aforementioned example.
% file not managed
not removing foo: file is untracked
? foo
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 00 state added, options none
not removing bar: file has been marked for add (use -f to force removal)
A bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 01 state clean, options none
R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 02 state modified, options none
not removing foo: file is modified (use -f to force removal)
M foo
? bar
./bar
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 03 state missing, options none
R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 10 state added, options -f
? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 11 state clean, options -f
R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 12 state modified, options -f
R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 13 state missing, options -f
R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 20 state added, options -A
not removing bar: file still exists (use -f to force removal)
A bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 21 state clean, options -A
not removing foo: file still exists (use -f to force removal)
? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 22 state modified, options -A
not removing foo: file still exists (use -f to force removal)
M foo
? bar
./bar
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 23 state missing, options -A
R foo
? bar
./bar
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 30 state added, options -Af
? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 31 state clean, options -Af
R foo
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 32 state modified, options -Af
R foo
./foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% 33 state missing, options -Af
R foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding test/bar
adding test/foo
% dir, options none
removing test/bar
removing test/foo
R test/bar
R test/foo
./foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% dir, options -f
removing test/bar
removing test/foo
R test/bar
R test/foo
./foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
% dir, options -A
not removing test/foo: file still exists (use -f to force removal)
removing test/bar
R test/bar
./foo
./test/foo
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
% dir, options -Af
removing test/bar
removing test/foo
R test/bar
R test/foo
./foo
./test/foo
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
test remove dropping empty trees (issue1861)
adding issue1861/b/c/y
adding issue1861/x
removing issue1861/b/c/y
x