view tests/test-debugcomplete.out @ 11769:ca6cebd8734e stable

dirstate: ignore symlinks when fs cannot handle them (issue1888) When the filesystem cannot handle the executable bit, we currently ignore it completely when looking for modified files. Similarly, it is impossible to set or clear the bit when the filesystem ignores it. This patch makes Mercurial treat symbolic links the same way. Symlinks are a little different since they manifest themselves as small files containing a filename (the symlink target). On Windows, these files show up as regular files, and on Linux and Mac they show up as real symlinks. Issue1888 presents a case where the symlink files are better ignored from the Windows side. A Linux client creates symlinks in a working copy which is shared over a network between Linux and Windows clients. The Samba server is helpful and defererences the symlink when the Windows client looks at it. This means that Mercurial on the Windows side sees file content instead of a file name in the symlink, and hence flags the link as modified. Ignoring the change would be much more helpful, similarly to how Mercurial does not report any changes when executable bits are ignored in a checkout on Windows. An initial checkout of a symbolic link on a file system that cannot handle symbolic links will still result in a regular file containing the target file name as its content. Sharing such a checkout with a Linux client will not turn the file into a symlink automatically, but 'hg revert' can fix that. After the revert, the Windows client will see the correct file content (provided by the Samba server when it follows the link on the Linux side) and otherwise ignore the change. Running 'hg perfstatus' 10 times gives these results: Before: After: min: 0.544703 min: 0.546549 med: 0.547592 med: 0.548881 avg: 0.549146 avg: 0.548549 max: 0.564112 max: 0.551504 The median time is increased about 0.24%.
author Martin Geisler <mg@aragost.com>
date Mon, 09 Aug 2010 15:31:56 +0200
parents 4c8842ee97ff
children
line wrap: on
line source

% Show all commands except debug commands
add
addremove
annotate
archive
backout
bisect
branch
branches
bundle
cat
clone
commit
copy
diff
export
forget
grep
heads
help
identify
import
incoming
init
locate
log
manifest
merge
outgoing
parents
paths
pull
push
recover
remove
rename
resolve
revert
rollback
root
serve
showconfig
status
summary
tag
tags
tip
unbundle
update
verify
version

% Show all commands that start with "a"
add
addremove
annotate
archive

% Do not show debug commands if there are other candidates
diff

% Show debug commands if there are no other candidates
debugancestor
debugbuilddag
debugcheckstate
debugcommands
debugcomplete
debugconfig
debugdag
debugdata
debugdate
debugfsinfo
debugindex
debugindexdot
debuginstall
debugpushkey
debugrebuildstate
debugrename
debugrevspec
debugsetparents
debugstate
debugsub
debugwalk

% Do not show the alias of a debug command if there are other candidates
% (this should hide rawcommit)
recover
remove
rename
resolve
revert
rollback
root

% Show the alias of a debug command if there are no other candidates


% Show the global options
--config
--cwd
--debug
--debugger
--encoding
--encodingmode
--help
--noninteractive
--profile
--quiet
--repository
--time
--traceback
--verbose
--version
-R
-h
-q
-v
-y

% Show the options for the "serve" command
--accesslog
--address
--certificate
--config
--cwd
--daemon
--daemon-pipefds
--debug
--debugger
--encoding
--encodingmode
--errorlog
--help
--ipv6
--name
--noninteractive
--pid-file
--port
--prefix
--profile
--quiet
--repository
--stdio
--style
--templates
--time
--traceback
--verbose
--version
--web-conf
-6
-A
-E
-R
-a
-d
-h
-n
-p
-q
-t
-v
-y

% Show an error if we use --options with an ambiguous abbreviation
hg: command 's' is ambiguous:
    serve showconfig status summary

% Show all commands + options
add: include, exclude, dry-run
annotate: rev, follow, no-follow, text, user, file, date, number, changeset, line-number, include, exclude
clone: noupdate, updaterev, rev, branch, pull, uncompressed, ssh, remotecmd
commit: addremove, close-branch, include, exclude, message, logfile, date, user
diff: rev, change, text, git, nodates, show-function, reverse, ignore-all-space, ignore-space-change, ignore-blank-lines, unified, stat, include, exclude
export: output, switch-parent, rev, text, git, nodates
forget: include, exclude
init: ssh, remotecmd
log: follow, follow-first, date, copies, keyword, rev, removed, only-merges, user, only-branch, branch, prune, patch, git, limit, no-merges, stat, style, template, include, exclude
merge: force, rev, preview
pull: update, force, rev, branch, ssh, remotecmd
push: force, rev, branch, new-branch, ssh, remotecmd
remove: after, force, include, exclude
serve: accesslog, daemon, daemon-pipefds, errorlog, port, address, prefix, name, web-conf, webdir-conf, pid-file, stdio, templates, style, ipv6, certificate
status: all, modified, added, removed, deleted, clean, unknown, ignored, no-status, copies, print0, rev, change, include, exclude
summary: remote
update: clean, check, date, rev
addremove: similarity, include, exclude, dry-run
archive: no-decode, prefix, rev, type, include, exclude
backout: merge, parent, rev, include, exclude, message, logfile, date, user
bisect: reset, good, bad, skip, command, noupdate
branch: force, clean
branches: active, closed
bundle: force, rev, branch, base, all, type, ssh, remotecmd
cat: output, rev, decode, include, exclude
copy: after, force, include, exclude, dry-run
debugancestor: 
debugbuilddag: mergeable-file, appended-file, overwritten-file, new-file
debugcheckstate: 
debugcommands: 
debugcomplete: options
debugdag: tags, branches, dots, spaces
debugdata: 
debugdate: extended
debugfsinfo: 
debugindex: 
debugindexdot: 
debuginstall: 
debugpushkey: 
debugrebuildstate: rev
debugrename: rev
debugrevspec: 
debugsetparents: 
debugstate: nodates
debugsub: rev
debugwalk: include, exclude
grep: print0, all, follow, ignore-case, files-with-matches, line-number, rev, user, date, include, exclude
heads: rev, topo, active, closed, style, template
help: 
identify: rev, num, id, branch, tags
import: strip, base, force, no-commit, exact, import-branch, message, logfile, date, user, similarity
incoming: force, newest-first, bundle, rev, branch, patch, git, limit, no-merges, stat, style, template, ssh, remotecmd
locate: rev, print0, fullpath, include, exclude
manifest: rev
outgoing: force, rev, newest-first, branch, patch, git, limit, no-merges, stat, style, template, ssh, remotecmd
parents: rev, style, template
paths: 
recover: 
rename: after, force, include, exclude, dry-run
resolve: all, list, mark, unmark, no-status, include, exclude
revert: all, date, rev, no-backup, include, exclude, dry-run
rollback: dry-run
root: 
showconfig: untrusted
tag: force, local, rev, remove, edit, message, date, user
tags: 
tip: patch, git, style, template
unbundle: update
verify: 
version: