Alien-SVN

 view release on metacpan or  search on metacpan

src/subversion/CHANGES  view on Meta::CPAN

239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
 Developer-visible changes:
  - General:
    * fix compilation with https://metacpan.org/pod/'--enable-optimize'">'--enable-optimize' with clang (r1534860)
    * fix compilation with debug build of BDB on Windows (r1501656, r1501702)
    * fix '--with-openssl' option when building on Windows (r1535139)
    * add test to fail when built against broken ZLib (r1537193 et al)
 
  - Bindings:
    * swig-rb: fix tests to run without installing on OS X (r1535161)
    * ctypes-python: build with compiler selected via configure (r1536537)
 
 
Version 1.8.4
(29 October 2013, from /branches/1.8.x)
 
 User-visible changes:
  - Client- and server-side bugfixes:
    * fix assertion on urls of the form 'file://./' (r1516806)
    * stop linking against psapi.dll on Windows (r1534102)

src/subversion/CHANGES  view on Meta::CPAN

2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
* 'svnmucc' now now takes '--non-interactive' option (r25977)
* 'svnmucc' now takes a global base revision, for extra safety (r23764)
* 'svnlook' now takes '--extensions' option (issue #2912)
* 'svnlook' now takes '-N' option (issue #2663)
* 'svnlook history' now takes '-l' / '--limit' option (r25843)
* 'svnserve' now takes '--config-file' option (r24119)
* 'mod_dav_svn' now uses Apache default mime-type for files (issue #2304)
* new '--with-revprop' option on all commands that commit (issue #1976)
* now accept "peg dates" (URL@{DATE}), behaving like peg revs (issue #2602)
* easier to try out experimental ra_serf http:// access module
* select ra_neon vs ra_serf on a site-by-site basis in config (r25535)
* client-side post-commit processing now more efficient (issue #2607)
* windows binaries now use a custom crash handler (issue #1628)
* add vim swap file patterns to default global-ignores (r24348)
* add "*.pyc" and "*.pyo" patterns to default global-ignores (issue #2415)
* add unix/libtool library patterns to default global-ignores (issue #2415)
* naming scheme for conflict files is now configurable (issue #2474)
* removed svn-ref.tex as it's extremely out of date (issue #2762)
* improved cancellation response in many situations
* support Neon up to 0.28
* character set conversion now uses native API on Windows (r25650)

src/subversion/CHANGES  view on Meta::CPAN

2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
  * authentication and authz bugs w.r.t. anonymous access (issue #2712)
  * inconclusive authz result should deny, not allow (r23815)
  * better reporting of problems parsing authz files (r22329)
  * set svn:date revprop even if dumpstream does not (issue #2729)
  * http:// commit can now create empty files properly (r25471, r25474)
  * squelch not-a-directory errors in both FS backends (issue #2549)
  * segfault on update-report response without base revision (issue #3023)
  * 'svnserve --root PATH' checks that PATH exists (r22580, r22701)
  * 'svnlook propget -t TXN_NAME' reports errors better (r22772)
  * make location of mod_dav_svn activity database configurable (r24873)
  * select only paths that are proper children of requested path (r25231)
  * http:// commit error could leave empty transactions behind (r23594)
  * 'svn switch --relocate' now works against unreadable repos root (r23848)
  * many other minor bugfixes too numerous to list here
 
- Contributed tools improvements and bugfixes:
  * svn_load_dirs.pl:
    - Support global-ignores list (issue #2470)
    - Allow "@" in filenames (r22203, Debian bug 359145)
    - Add -no_auto_exe option (r26399)
  * svnmerge.py:

src/subversion/INSTALL  view on Meta::CPAN

882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
"To register the SDK bin, include, and library directories with
  Microsoft Visual Studio® version 6.0 and Visual Studio .NET,
  click Start, point to All Programs, point to Microsoft Platform
  SDK February 2003, point to Visual Studio Registration, and then
  click Register PSDK Directories with Visual Studio. This
  registration process places the SDK bin, include, and library
  directories at the beginning of the search paths, which ensures
  that the latest headers and libraries are used when building
  applications in the IDE. Note that for Visual Studio 6.0
  integration to succeed, Visual Studio 6.0 must run at least once
  before you select Register PSDK Directories with Visual
  Studio. Also note that when this option is run, the IDEs should
  not be running."
 
* Install Python and add it to your path
* Install Perl (it should add itself to the path)
* Copy AWK (awk95.exe) to awk.exe (e.g. SVN\awk\awk.exe) and add
  the directory containing it (e.g. SVN\awk) to the path.
* Install Apache 2 using the msi file if you are going to test the
  server dso modules and are using Visual Studio 6.  You must build
  and install it from source if you are not using Visual Studio 6 and

src/subversion/build/config.guess  view on Meta::CPAN

153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
        ;;
esac
 
# Note: order is significant - the case branches are not exclusive.
 
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
    *:NetBSD:*:*)
        # NetBSD (nbsd) targets should (where applicable) match one or
        # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
        # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
        # switched to ELF, *-*-netbsd* would select the old
        # object file format.  This provides both forward
        # compatibility and a consistent mechanism for selecting the
        # object file format.
        #
        # Note: NetBSD doesn't particularly care about the vendor
        # portion of the name.  We always set it to "unknown".
        sysctl="sysctl -n hw.machine_arch"
        UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
            /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
        case "${UNAME_MACHINE_ARCH}" in
            armeb) machine=armeb-unknown ;;
            arm*) machine=arm-unknown ;;

src/subversion/build/libtool.m4  view on Meta::CPAN

7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
IFS=$as_save_IFS
lt_ac_max=0
lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
# along with /bin/sed that truncates output.
for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
  test ! -f "$lt_ac_sed" && continue
  cat /dev/null > conftest.in
  lt_ac_count=0
  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
  # Check for GNU sed and select it if it is found.
  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
    lt_cv_path_SED=$lt_ac_sed
    break
  fi
  while true; do
    cat conftest.in conftest.in >conftest.tmp
    mv conftest.tmp conftest.in
    cp conftest.in conftest.nl
    echo >>conftest.nl
    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break

src/subversion/build/ltmain.sh  view on Meta::CPAN

7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
# -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
# -r[0-9][0-9]*        specify processor for the SGI compiler
# -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
# +DA*, +DD*           enable 64-bit mode for the HP compiler
# -q*                  compiler args for the IBM compiler
# -m*, -t[45]*, -txscale* architecture-specific flags for GCC
# -F/path              path to uninstalled frameworks, gcc on darwin
# -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
# -fstack-protector*   stack protector flags for GCC
# @file                GCC response files
# -tp=*                Portland pgcc target processor selection
# --sysroot=*          for sysroot support
# -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
# -stdlib=*            select c++ std lib with clang
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
  func_quote_for_eval "$arg"
  arg=$func_quote_for_eval_result
  func_append compile_command " $arg"
  func_append finalize_command " $arg"
  func_append compiler_flags " $arg"
  continue
  ;;

src/subversion/build/ltmain.sh  view on Meta::CPAN

10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
# static archive out of a convenience library, or when linking
# the entirety of a libtool archive into another (currently
# not supported by libtool).
if (for obj in $oldobjs
    do
      func_basename "$obj"
      $ECHO "$func_basename_result"
    done | sort | sort -uc >/dev/null 2>&1); then
  :
else
  echo "copying selected object files to avoid basename conflicts..."
  gentop=$output_objdir/${outputname}x
  func_append generated " $gentop"
  func_mkdir_p "$gentop"
  save_oldobjs=$oldobjs
  oldobjs=
  counter=1
  for obj in $save_oldobjs
  do
    func_basename "$obj"
    objbase=$func_basename_result

src/subversion/build/run_tests.py  view on Meta::CPAN

516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
# run the tests
svntest.testcase.TextColors.disable()
 
if self.list_tests:
  prog_f = None
else:
  prog_f = progress_func
 
if test_nums:
  test_selection = [test_nums]
else:
  test_selection = []
 
try:
  failed = svntest.main.execute_tests(prog_mod.test_list,
                                      serial_only=serial_only,
                                      test_name=progbase,
                                      progress_func=prog_f,
                                      test_selection=test_selection)
except svntest.Failure:
  if self.log:
    os.write(old_stdout, '.' * dot_count)
  failed = True
 
# restore some values
sys.path = old_path
if self.log:
  sys.stdout.flush()
  sys.stderr.flush()

src/subversion/build/transform_sql.py  view on Meta::CPAN

128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# For relative paths that consist of one or more components like 'subdir'
# we can accomplish this by comparing local_relpath with 'subdir/' and
# 'subdir0' ('/'+1 = '0')
#
# For the working copy root this case is less simple and not strictly
# valid utf-8/16 (but luckily Sqlite doesn't validate utf-8 nor utf-16).
# The binary blob x'FFFF' is higher than any valid utf-8 and utf-16
# sequence.
#
# So for the root we can compare with > '' and < x'FFFF'. (This skips the
# root itself and selects all descendants)
#
 
# '/'+1 == '0'
line = re.sub(
      r'IS_STRICT_DESCENDANT_OF[(]([A-Za-z_.]+), ([?][0-9]+)[)]',
      r"(((\1) > (CASE (\2) WHEN '' THEN '' ELSE (\2) || '/' END))" +
      r" AND ((\1) < CASE (\2) WHEN '' THEN X'FFFF' ELSE (\2) || '0' END))",
      line)
 
# RELPATH_SKIP_JOIN(x, y, z) skips the x prefix from z and the joins the

src/subversion/configure  view on Meta::CPAN

2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
cat >>confdefs.h <<_ACEOF
#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
_ACEOF
 
cat >>confdefs.h <<_ACEOF
#define PACKAGE_URL "$PACKAGE_URL"
_ACEOF
 
 
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
ac_site_file1=NONE
ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
  # We do not want a PATH search for config.site.
  case $CONFIG_SITE in #((
    -*)  ac_site_file1=./$CONFIG_SITE;;
    */*) ac_site_file1=$CONFIG_SITE;;
    *)   ac_site_file1=./$CONFIG_SITE;;
  esac
elif test "x$prefix" != xNONE; then

src/subversion/configure  view on Meta::CPAN

4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
  # Loop through the user's path and test for each of PROGNAME-LIST
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_prog in sed gsed; do
    for ac_exec_ext in '' $ac_executable_extensions; do
      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
      as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
  # Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
*GNU*)
  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
  ac_count=0
  $as_echo_n 0123456789 >"conftest.in"
  while :
  do
    cat "conftest.in" "conftest.in" >"conftest.tmp"

src/subversion/configure  view on Meta::CPAN

4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
  # Loop through the user's path and test for each of PROGNAME-LIST
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_prog in grep ggrep; do
    for ac_exec_ext in '' $ac_executable_extensions; do
      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
      as_fn_executable_p "$ac_path_GREP" || continue
# Check for GNU ac_path_GREP and select it if it is found.
  # Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
*GNU*)
  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
*)
  ac_count=0
  $as_echo_n 0123456789 >"conftest.in"
  while :
  do
    cat "conftest.in" "conftest.in" >"conftest.tmp"

src/subversion/configure  view on Meta::CPAN

4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
  # Loop through the user's path and test for each of PROGNAME-LIST
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_prog in egrep; do
    for ac_exec_ext in '' $ac_executable_extensions; do
      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
      as_fn_executable_p "$ac_path_EGREP" || continue
# Check for GNU ac_path_EGREP and select it if it is found.
  # Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
*GNU*)
  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
*)
  ac_count=0
  $as_echo_n 0123456789 >"conftest.in"
  while :
  do
    cat "conftest.in" "conftest.in" >"conftest.tmp"

src/subversion/configure  view on Meta::CPAN

7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
  # Loop through the user's path and test for each of PROGNAME-LIST
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_prog in sed gsed; do
    for ac_exec_ext in '' $ac_executable_extensions; do
      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
      as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
  # Check for GNU $ac_path_SED
case `"$ac_path_SED" --version 2>&1` in
*GNU*)
  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
  ac_count=0
  $as_echo_n 0123456789 >"conftest.in"
  while :
  do
    cat "conftest.in" "conftest.in" >"conftest.tmp"

src/subversion/configure  view on Meta::CPAN

7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
  # Loop through the user's path and test for each of PROGNAME-LIST
  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_prog in fgrep; do
    for ac_exec_ext in '' $ac_executable_extensions; do
      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
      as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
  # Check for GNU $ac_path_FGREP
case `"$ac_path_FGREP" --version 2>&1` in
*GNU*)
  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
*)
  ac_count=0
  $as_echo_n 0123456789 >"conftest.in"
  while :
  do
    cat "conftest.in" "conftest.in" >"conftest.tmp"

src/subversion/doc/doxygen.conf  view on Meta::CPAN

201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# Fortran.
 
OPTIMIZE_FOR_FORTRAN   = NO
 
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for
# VHDL.
 
OPTIMIZE_OUTPUT_VHDL   = NO
 
# Doxygen selects the parser to use depending on the extension of the files it parses.
# With this tag you can assign which parser to use for a given extension.
# Doxygen has a built-in mapping, but you can override or extend it using this tag.
# The format is ext=language, where ext is a file extension, and language is one of
# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
 
EXTENSION_MAPPING      =

src/subversion/doc/doxygen.conf  view on Meta::CPAN

594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
# If left blank NO is used.
 
RECURSIVE              = NO
 
# The EXCLUDE tag can be used to specify files and/or directories that should
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
 
EXCLUDE                =
 
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
# from the input.
 
EXCLUDE_SYMLINKS       = NO
 
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories. Note that the wildcards are matched
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*

src/subversion/doc/doxygen.conf  view on Meta::CPAN

1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
# documented header file showing the documented files that directly or
# indirectly include this file.
 
INCLUDED_BY_GRAPH      = YES
 
# If the CALL_GRAPH and HAVE_DOT options are set to YES then
# doxygen will generate a call dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable call graphs
# for selected functions only using the \callgraph command.
 
CALL_GRAPH             = NO
 
# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
# doxygen will generate a caller dependency graph for every global function
# or class method. Note that enabling this option will significantly increase
# the time of a run. So in most cases it will be better to enable caller
# graphs for selected functions only using the \callergraph command.
 
CALLER_GRAPH           = NO
 
# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
# will graphical hierarchy of all classes instead of a textual one.
 
GRAPHICAL_HIERARCHY    = YES
 
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories

src/subversion/subversion/bindings/javahl/src/org/apache/subversion/javahl/ClientNotifyInformation.java  view on Meta::CPAN

527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
/** Operation failed because the node remains in conflict */
failed_conflict ("failed conflict"),
 
/** Operation failed because an added node is missing */
failed_missing ("failed missing"),
 
/** Operation failed because a node is out of date */
failed_out_of_date ("failed out of date"),
 
/** Operation failed because an added parent is not selected */
failed_no_parent ("failed no parent"),
 
/** Operation failed because a node is locked */
failed_locked ("failed by lock"),
 
/** Operation failed because the operation was forbidden */
failed_forbidden_by_server ("failed forbidden by server"),
 
/** Operation skipped the path because it was conflicted */
skip_conflicted ("skipped conflicted path"),

src/subversion/subversion/bindings/swig/perl/native/Client.pm  view on Meta::CPAN

538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
Invokes \&receiver passing it information about $path_or_url for $revision.
The information returned is system-generated metadata, not the sort of
"property" metadata created by users.  For methods available on the object
passed to \&receiver, B<see svn_info_t>.
 
If both revision arguments are either svn_opt_revision_unspecified or NULL,
then information will be pulled solely from the working copy; no network
connections will be made.
 
Otherwise, information will be pulled from a repository.  The actual node
revision selected is determined by the $path_or_url as it exists in
$peg_revision.  If $peg_revision is undef, then it defaults to HEAD for URLs
or WORKING for WC targets.
 
If $path_or_url is not a local path, then if $revision is PREV (or some other
kind that requires a local path), an error will be returned, because the
desired revision cannot be determined.
 
Uses the authentication baton cached in ctx to authenticate against the
repository.

src/subversion/subversion/bindings/swig/perl/native/Ra.pm  view on Meta::CPAN

236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
=item $ra-E<gt>get_dir2($path, $revnum, $dirent_fields)
 
Fetch the directory entries and properties of the directory at C<$path>
in revision C<$revnum>
 
A list of three values are returned.  The first is a reference to a hash
of directory entries.  The keys are the names of all the files and
directories in C<$path> (not full paths, just the filenames).  The values
are L<_p_svn_dirent_t|SVN::Core/_p_svn_dirent_t> objects, with all their
fields filled in.  The third parameter to C<get_dir2> allows you to
select particular fields.  TODO: I don't think the constants you'd use
to construct the C<$dirent_fields> value are provided in the Perl API.
 
The second value is a number, which is only valid if C<$revnum> is
C<$SVN::Core::INVALID_REVNUM>.  If that is the case then the latest revision
will be fetched, and the revision number (the HEAD revision) will be returned
as the second value.  Otherwise the revision number returned will be
completely arbitrary.
 
The third value returned will be a reference to a hash of all properties
on the directory.  This means I<all> properties: not just ones controlled by

src/subversion/subversion/include/private/svn_sqlite.h  view on Meta::CPAN

328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
                          apr_pool_t *scratch_pool);
 
/* Return the column as a checksum. If the column is null, then NULL will
   be stored into *CHECKSUM. The result will be allocated in RESULT_POOL. */
svn_error_t *
svn_sqlite__column_checksum(const svn_checksum_t **checksum,
                            svn_sqlite__stmt_t *stmt,
                            int column,
                            apr_pool_t *result_pool);
 
/* Return TRUE if the result of selecting the column is null,
   FALSE otherwise */
svn_boolean_t
svn_sqlite__column_is_null(svn_sqlite__stmt_t *stmt, int column);
 
/* Return the number of bytes the column uses in a text or blob representation.
   0 for NULL columns. */
int
svn_sqlite__column_bytes(svn_sqlite__stmt_t *stmt, int column);

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
*
* ### TODO: currently, file externals hidden inside an unversioned dir are
*     skipped deliberately, because we can't commit those yet.
*     See STMT_SELECT_COMMITTABLE_EXTERNALS_BELOW.
*
* ### TODO: With @c depth_immediates, this function acts as if
*     @a include_dir_externals was passed #FALSE, but caller expects
*     immediate child dir externals to be included @c depth_empty.
*
* When @a commit_as_operations is #TRUE it is possible to delete a node and
* all its descendants by selecting just the root of the deletion. If it is
* set to #FALSE this will raise an error.
*
* If @a commit_callback is non-NULL, then for each successful commit, call
* @a commit_callback with @a commit_baton and a #svn_commit_info_t for
* the commit.
*
* @note #svn_depth_unknown and #svn_depth_exclude must not be passed
* for @a depth.
*
* Use @a pool for any temporary allocations.

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
*
* @a target is a WC absolute path or a URL.
*
* Don't store any path, not even @a target, if it does not have a
* property named @a propname.
*
* If @a revision->kind is #svn_opt_revision_unspecified, then: get
* properties from the working copy if @a target is a working copy
* path, or from the repository head if @a target is a URL.  Else get
* the properties as of @a revision.  The actual node revision
* selected is determined by the path as it exists in @a peg_revision.
* If @a peg_revision->kind is #svn_opt_revision_unspecified, then
* it defaults to #svn_opt_revision_head for URLs or
* #svn_opt_revision_working for WC targets.  Use the authentication
* baton in @a ctx for authentication if contacting the repository.
* If @a actual_revnum is not @c NULL, the actual revision number used
* for the fetch is stored in @a *actual_revnum.
*
* If @a depth is #svn_depth_empty, fetch the property from
* @a target only; if #svn_depth_files, fetch from @a target and its
* file children (if any); if #svn_depth_immediates, from @a target

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
* Invoke @a receiver with @a receiver_baton to return the regular explicit, and
* possibly the inherited, properties of @a target, a URL or working copy path.
* @a receiver will be called for each path encountered.
*
* @a target is a WC path or a URL.
*
* If @a revision->kind is #svn_opt_revision_unspecified, then get the
* explicit (and possibly the inherited) properties from the working copy,
* if @a target is a working copy path, or from the repository head if
* @a target is a URL.  Else get the properties as of @a revision.
* The actual node revision selected is determined by the path as it exists
* in @a peg_revision.  If @a peg_revision->kind is
* #svn_opt_revision_unspecified, then it defaults to #svn_opt_revision_head
* for URLs or #svn_opt_revision_working for WC targets.  Use the
* authentication baton cached in @a ctx for authentication if contacting
* the repository.
*
* If @a depth is #svn_depth_empty, list only the properties of
* @a target itself.  If @a depth is #svn_depth_files, and
* @a target is a directory, list the properties of @a target
* and its file entries.  If #svn_depth_immediates, list the properties

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
* */
typedef svn_error_t *(*svn_client_list_func_t)(void *baton,
                                               const char *path,
                                               const svn_dirent_t *dirent,
                                               const svn_lock_t *lock,
                                               const char *abs_path,
                                               apr_pool_t *pool);
 
/**
 * Report the directory entry, and possibly children, for @a
 * path_or_url at @a revision.  The actual node revision selected is
 * determined by the path as it exists in @a peg_revision.  If @a
 * peg_revision->kind is #svn_opt_revision_unspecified, then it defaults
 * to #svn_opt_revision_head for URLs or #svn_opt_revision_working
 * for WC targets.
 *
 * Report directory entries by invoking @a list_func/@a baton with @a path
 * relative to @a path_or_url.  The dirent for @a path_or_url is reported
 * using an empty @a path.  If @a path_or_url is a directory, also report
 * its children.  If @a path_or_url is non-existent, return
 * #SVN_ERR_FS_NOT_FOUND.

src/subversion/subversion/include/svn_client.h  view on Meta::CPAN

6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
* Invoke @a receiver with @a receiver_baton to return information
* about @a abspath_or_url in @a revision.  The information returned is
* system-generated metadata, not the sort of "property" metadata
* created by users.  See #svn_client_info2_t.
*
* If both revision arguments are either #svn_opt_revision_unspecified
* or @c NULL, then information will be pulled solely from the working copy;
* no network connections will be made.
*
* Otherwise, information will be pulled from a repository.  The
* actual node revision selected is determined by the @a abspath_or_url
* as it exists in @a peg_revision.  If @a peg_revision->kind is
* #svn_opt_revision_unspecified, then it defaults to
* #svn_opt_revision_head for URLs or #svn_opt_revision_working for
* WC targets.
*
* If @a abspath_or_url is not a local path, then if @a revision is of
* kind #svn_opt_revision_previous (or some other kind that requires
* a local path), an error will be returned, because the desired
* revision cannot be determined.
*

src/subversion/subversion/include/svn_config.h  view on Meta::CPAN

702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
svn_config_write_auth_data(apr_hash_t *hash,
                           const char *cred_kind,
                           const char *realmstring,
                           const char *config_dir,
                           apr_pool_t *pool);
 
 
/** Callback for svn_config_walk_auth_data().
 *
 * Called for each credential walked by that function (and able to be
 * fully purged) to allow perusal and selective removal of credentials.
 *
 * @a cred_kind and @a realmstring specify the key of the credential.
 * @a hash contains the hash data associated with the record.
 *
 * Before returning set @a *delete_cred to TRUE to remove the credential from
 * the cache; leave @a *delete_cred unchanged or set it to FALSE to keep the
 * credential.
 *
 * Implementations may return #SVN_ERR_CEASE_INVOCATION to indicate
 * that the callback should not be called again.  Note that when that

src/subversion/subversion/include/svn_subst.h  view on Meta::CPAN

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/** Values used in keyword expansion.
 *
 * @deprecated Provided for backward compatibility with the 1.2 API.
 */
typedef struct svn_subst_keywords_t
{
  /**
   * @name svn_subst_keywords_t fields
   * String expansion of the like-named keyword, or NULL if the keyword
   * was not selected in the svn:keywords property.
   * @{
   */
  const svn_string_t *revision;
  const svn_string_t *date;
  const svn_string_t *author;
  const svn_string_t *url;
  const svn_string_t *id;
  /** @} */
} svn_subst_keywords_t;

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
svn_wc_notify_failed_conflict,
 
/** Operation failed because an added node is missing
 * @since New in 1.7. */
svn_wc_notify_failed_missing,
 
/** Operation failed because a node is out of date
 * @since New in 1.7. */
svn_wc_notify_failed_out_of_date,
 
/** Operation failed because an added parent is not selected
 * @since New in 1.7. */
svn_wc_notify_failed_no_parent,
 
/** Operation failed because a node is locked by another user and/or
 * working copy.  @since New in 1.7. */
svn_wc_notify_failed_locked,
 
/** Operation failed because the operation was forbidden by the server.
 * @since New in 1.7. */
svn_wc_notify_failed_forbidden_by_server,

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
/** The way in which the conflict callback chooses a course of action.
 *
 * @since New in 1.5.
 */
typedef enum svn_wc_conflict_choice_t
{
  /** Don't resolve the conflict now.  Let libsvn_wc mark the path
     'conflicted', so user can run 'svn resolved' later. */
  svn_wc_conflict_choose_postpone,
 
  /** If there were files to choose from, select one as a way of
     resolving the conflict here and now.  libsvn_wc will then do the
     work of "installing" the chosen file.
  */
  svn_wc_conflict_choose_base,            /**< original version */
  svn_wc_conflict_choose_theirs_full,     /**< incoming version */
  svn_wc_conflict_choose_mine_full,       /**< own version */
  svn_wc_conflict_choose_theirs_conflict, /**< incoming (for conflicted hunks) */
  svn_wc_conflict_choose_mine_conflict,   /**< own (for conflicted hunks) */
  svn_wc_conflict_choose_merged,          /**< merged version */

src/subversion/subversion/include/svn_wc.h  view on Meta::CPAN

2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
* @note Fields may be added to the end of this structure in future
 * versions.  Therefore, to preserve binary compatibility, users
 * should not directly allocate structures of this type.  Instead,
 * construct this structure using svn_wc_create_conflict_result()
 * below.
 *
 * @since New in 1.5.
 */
typedef struct svn_wc_conflict_result_t
{
  /** A choice to either delay the conflict resolution or select a
      particular file to resolve the conflict. */
  svn_wc_conflict_choice_t choice;
 
  /** If not NULL, this is a path to a file which contains the client's
      (or more likely, the user's) merging of the three values in
      conflict.  libsvn_wc accepts this file if (and only if) @c choice
      is set to #svn_wc_conflict_choose_merged.*/
  const char *merged_file;
 
  /** If true, save a backup copy of merged_file (or the original

src/subversion/subversion/libsvn_client/copy.c  view on Meta::CPAN

891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
svn_client__copy_pair_t *pair = APR_ARRAY_IDX(copy_pairs, i,
                                              svn_client__copy_pair_t *);
path_driver_info_t *info = APR_ARRAY_IDX(path_infos, i,
                                         path_driver_info_t *);
 
/* Source and destination are the same?  It's a resurrection. */
if (strcmp(pair->src_abspath_or_url, pair->dst_abspath_or_url) == 0)
  info->resurrection = TRUE;
 
/* We need to add each dst_URL, and (in a move) we'll need to
   delete each src_URL.  Our selection of TOP_URL so far ensures
   that all our destination URLs (and source URLs, for moves)
   are at least as deep as TOP_URL, but we need to make sure
   that TOP_URL is an *ancestor* of all our to-be-edited paths.
 
   Issue #683 is demonstrates this scenario.  If you're
   resurrecting a deleted item like this: 'svn cp -rN src_URL
   dst_URL', then src_URL == dst_URL == top_url.  In this
   situation, we want to open an RA session to be at least the
   *parent* of all three. */
if ((strcmp(top_url, pair->dst_abspath_or_url) == 0)

src/subversion/subversion/libsvn_client/list.c  view on Meta::CPAN

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
      else
        *dirent_p = NULL;
    }
  else
    SVN_ERR(err);
 
  return SVN_NO_ERROR;
}
 
/* List the file/directory entries for PATH_OR_URL at REVISION.
   The actual node revision selected is determined by the path as
   it exists in PEG_REVISION.
 
   If DEPTH is svn_depth_infinity, then list all file and directory entries
   recursively.  Else if DEPTH is svn_depth_files, list all files under
   PATH_OR_URL (if any), but not subdirectories.  Else if DEPTH is
   svn_depth_immediates, list all files and include immediate
   subdirectories (at svn_depth_empty).  Else if DEPTH is
   svn_depth_empty, just list PATH_OR_URL with none of its entries.
 
   DIRENT_FIELDS controls which fields in the svn_dirent_t's are

src/subversion/subversion/libsvn_delta/svndiff.c  view on Meta::CPAN

587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
{
  apr_size_t c;
  apr_size_t action;
 
  if (p == end)
    return NULL;
 
  /* We need this more than once */
  c = *p++;
 
  /* Decode the instruction selector.  */
  action = (c >> 6) & 0x3;
  if (action >= 0x3)
      return NULL;
 
  /* This relies on enum svn_delta_action values to match and never to be
     redefined. */
  op->action_code = (enum svn_delta_action)(action);
 
  /* Decode the length and offset.  */
  op->length = c & 0x3f;

src/subversion/subversion/libsvn_diff/token.c  view on Meta::CPAN

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "svn_error.h"
#include "svn_diff.h"
#include "svn_types.h"
 
#include "diff.h"
 
 
/*
 * Prime number to use as the size of the hash table.  This number was
 * not selected by testing of any kind and may need tweaking.
 */
#define SVN_DIFF__HASH_SIZE 127
 
struct svn_diff__node_t
{
  svn_diff__node_t       *parent;
  svn_diff__node_t       *left;
  svn_diff__node_t       *right;
 
  apr_uint32_t            hash;

src/subversion/subversion/libsvn_fs_base/bdb/env.c  view on Meta::CPAN

334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
         (char *) cast is safe and why it is done. */
      bdb->env->set_errpfx(bdb->env, (char *) bdb);
 
      /* bdb_error_gatherer is in parens to stop macro expansion. */
      bdb->env->set_errcall(bdb->env, (bdb_error_gatherer));
 
      /* Needed on Windows in case Subversion and Berkeley DB are using
         different C runtime libraries  */
      db_err = bdb->env->set_alloc(bdb->env, malloc, realloc, free);
 
      /* If we detect a deadlock, select a transaction to abort at
         random from those participating in the deadlock.  */
      if (!db_err)
        db_err = bdb->env->set_lk_detect(bdb->env, DB_LOCK_RANDOM);
    }
  return convert_bdb_error(bdb, db_err);
}
 
 
/* The environment descriptor cache. */

src/subversion/subversion/libsvn_fs_base/notes/structure  view on Meta::CPAN

310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
       table, of course).
 
       Note also that REP-KEY might refer to a representation that
       itself requires undeltification.  We use a delta combiner to
       combine all the deltas needed to reproduce the fulltext from
       some stored plaintext.
 
       Branko says this is what REP-OFFSET is for:
       > The offsets embedded in the svndiff are stored in a string;
       > these offsets would be in the representation. The point is that
       > you get all the information you need to select the appropriate
       > windows from the rep skel -- without touching a single
       > string. This means a bit more space used in the repository, but
       > lots less memory used on the server.
 
       We'll see if it turns out to be necessary.
 
In the future, there may be other representations, for example
indicating that the text is stored elsewhere in the database, or
perhaps in an ordinary Unix file.

src/subversion/subversion/libsvn_fs_fs/dag.h  view on Meta::CPAN

263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
 
/* Set *ENTRIES_P to a hash table of NODE's entries.  The keys of the
   table are entry names, and the values are svn_fs_dirent_t's.  The
   returned table (and its keys and values) is allocated in POOL,
   which is also used for temporary allocations. */
svn_error_t *svn_fs_fs__dag_dir_entries(apr_hash_t **entries_p,
                                        dag_node_t *node,
                                        apr_pool_t *pool);
 
/* Fetches the NODE's entries and returns a copy of the entry selected
   by the key value given in NAME and set *DIRENT to a copy of that
   entry. If such entry was found, the copy will be allocated in POOL.
   Otherwise, the *DIRENT will be set to NULL.
 */
/* ### This function is currently only called from dag.c. */
svn_error_t * svn_fs_fs__dag_dir_entry(svn_fs_dirent_t **dirent,
                                       dag_node_t *node,
                                       const char* name,
                                       apr_pool_t *pool);

src/subversion/subversion/libsvn_ra_serf/property.c  view on Meta::CPAN

899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
  return svn_error_trace(svn_ra_serf__walk_node_props(
                            props,
                            set_flat_props,
                            *flat_props /* baton */,
                            scratch_pool));
}
 
 
static svn_error_t *
select_revprops(void *baton,
                const char *ns,
                const char *name,
                const svn_string_t *val,
                apr_pool_t *scratch_pool)
{
  apr_hash_t *revprops = baton;
  apr_pool_t *result_pool = apr_hash_pool_get(revprops);
  const char *prop_name;
 
  /* ### copy NAME into the RESULT_POOL?  */

src/subversion/subversion/libsvn_ra_serf/property.c  view on Meta::CPAN

933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
      return SVN_NO_ERROR;
    }
 
  svn_hash_sets(revprops, prop_name, val);
 
  return SVN_NO_ERROR;
}
 
 
svn_error_t *
svn_ra_serf__select_revprops(apr_hash_t **revprops,
                             const char *name,
                             svn_revnum_t rev,
                             apr_hash_t *all_revprops,
                             apr_pool_t *result_pool,
                             apr_pool_t *scratch_pool)
{
  *revprops = apr_hash_make(result_pool);
 
  return svn_error_trace(svn_ra_serf__walk_all_props(
                            all_revprops, name, rev,
                            select_revprops, *revprops,
                            scratch_pool));
}
 
 
/*
 * Contact the server (using CONN) to calculate baseline
 * information for BASELINE_URL at REVISION (which may be
 * SVN_INVALID_REVNUM to query the HEAD revision).
 *
 * If ACTUAL_REVISION is non-NULL, set *ACTUAL_REVISION to revision

src/subversion/subversion/libsvn_ra_serf/ra_serf.h  view on Meta::CPAN

1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
   will be returned.  */
const char *
svn_ra_serf__svnname_from_wirename(const char *ns,
                                   const char *name,
                                   apr_pool_t *result_pool);
 
 
/* Select the basic revision properties from the set of "all" properties.
   Return these in *REVPROPS, allocated from RESULT_POOL.  */
svn_error_t *
svn_ra_serf__select_revprops(apr_hash_t **revprops,
                             const char *name,
                             svn_revnum_t rev,
                             apr_hash_t *all_revprops,
                             apr_pool_t *result_pool,
                             apr_pool_t *scratch_pool);
 
 
/* PROPS is nested hash tables mapping NS -> NAME -> VALUE.
   This function takes the NS:NAME:VALUE hashes and flattens them into a set of
   names to VALUE. The names are composed of NS:NAME, with specific

src/subversion/subversion/libsvn_ra_serf/replay.c  view on Meta::CPAN

188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
  strcmp(name.name, "editor-report") == 0)
{
  push_state(parser, ctx, REPORT);
 
  /* Before we can continue, we need the revision properties. */
  SVN_ERR_ASSERT(!ctx->propfind_handler || ctx->propfind_handler->done);
 
  /* Create a pool for the commit editor. */
  ctx->dst_rev_pool = svn_pool_create(ctx->src_rev_pool);
 
  SVN_ERR(svn_ra_serf__select_revprops(&ctx->props,
                                       ctx->revprop_target,
                                       ctx->revprop_rev,
                                       ctx->revs_props,
                                       ctx->dst_rev_pool,
                                       scratch_pool));
 
  if (ctx->revstart_func)
    {
      SVN_ERR(ctx->revstart_func(ctx->revision, ctx->replay_baton,
                                 &ctx->editor, &ctx->editor_baton,

src/subversion/subversion/libsvn_ra_serf/serf.c  view on Meta::CPAN

659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
    {
      /* Use the VCC as the propfind target path. */
      SVN_ERR(svn_ra_serf__discover_vcc(&propfind_path, session, NULL, pool));
    }
 
  /* ### fix: fetch hash of *just* the PATH@REV props. no nested hash.  */
  SVN_ERR(svn_ra_serf__retrieve_props(&props, session, session->conns[0],
                                      propfind_path, rev, "0", all_props,
                                      pool, pool));
 
  SVN_ERR(svn_ra_serf__select_revprops(ret_props, propfind_path, rev, props,
                                       pool, pool));
 
  return SVN_NO_ERROR;
}
 
/* Implements svn_ra__vtable_t.rev_prop(). */
static svn_error_t *
svn_ra_serf__rev_prop(svn_ra_session_t *session,
                      svn_revnum_t rev,
                      const char *name,

src/subversion/subversion/libsvn_ra_svn/protocol  view on Meta::CPAN

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
reasons, and is ignored by the client.  The cap values give a list of
server capabilities (see section 2.1).
 
If the client does not support a protocol version within the specified
range, it closes the connection.  Otherwise, the client responds to
the greeting with an item matching the prototype:
 
  response: ( version:number ( cap:word ... ) url:string
              ? ra-client:string ( ? client:string ) )
 
version gives the protocol version selected by the client.  The cap
values give a list of client capabilities (see section 2.1).  url
gives the URL the client is accessing.  ra-client is a string
identifying the RA implementation, e.g. "SVN/1.6.0" or "SVNKit 1.1.4".
client is the string returned by svn_ra_callbacks2_t.get_client_string;
that callback may not be implemented, so this is optional.
 
Upon receiving the client's response to the greeting, the server sends
an authentication request, which is a command response whose arguments
match the prototype:

src/subversion/subversion/libsvn_subr/auth.c  view on Meta::CPAN

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include "private/svn_dep_compat.h"
#include "private/svn_subr_private.h"
 
#include "auth.h"
 
/* AN OVERVIEW
   ===========
 
   A good way to think of this machinery is as a set of tables.
 
     - Each type of credentials selects a single table.
 
     - In a given table, each row is a 'provider' capable of returning
       the same type of credentials.  Each column represents a
       provider's repeated attempts to provide credentials.
 
 
   Fetching Credentials from Providers
   -----------------------------------
 
   When the caller asks for a particular type of credentials, the



( run in 0.848 second using v1.01-cache-2.11-cpan-1f129e94a17 )