{
    "mode": "perldoc",
    "parameter": "SVN::Fs",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/SVN%3A%3AFs/json",
    "generated": "2026-06-14T12:49:35Z",
    "sections": {
        "NAME": {
            "content": "SVN::Fs - Subversion filesystem functions\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "SVN::Fs wraps the functions in svnfs.h. The actual namespace for filesystem objects is\n\"psvnfst\".\n",
            "subsections": []
        },
        "FUNCTIONS": {
            "content": "SVN::Fs::berkeleylogfiles($path, $onlyunused)\nSVN::Fs::berkeleyrecover($path)\nSVN::Fs::checkrelated($id1, $id2)\nSVN::Fs::compareids($id1, $id2)\nSVN::Fs::contentschanged($root1, $path1, $root2, $path2)\nSVN::Fs::create($path, $config)\nSVN::Fs::deletefs($path)\nSVN::Fs::deltifyrevision($fs, $rev)\nSVN::Fs::getfiledeltastream($sourceroot, $sourcepath, $targetroot, $targetpath)\nSVN::Fs::hotcopy($srcpath, $destpath, $clean)\nSVN::Fs::initialize($pool)\nSVN::Fs::merge($sourceroot, $sourcepath, $targetroot, $targetpath, $ancestorroot,\n$ancestorpath)\nSVN::Fs::open($path, $config)\nSVN::Fs::path($fs)\nSVN::Fs::printmodules($s)\nTODO - doesn't work, segfaults if $s is null, doesn't do anything if its an empty string\n\nSVN::Fs::propschanged($root1, $path1, $root2, $path2)\nSee also \"SVN::Fs::contentschanged\"\n\nSVN::Fs::purgetxn($fs, $txnid)\nCleanup the transaction $txnid, removing it completely from the filesystem $fs.\n\nSVN::Fs::setwarningfunc($fs, $code, $baton)\nSVN::Fs::unparseid($id)\nReturn a string containing the unparsed form of the node or node revision id $id, which must\nbe a \"psvnfsidt\" object.\n\nTODO - why isn't this a method of that object?\n\nSVN::Fs::version()\nTODO - what can we do with the psvnversiont value returned?\n\nSVN::Fs::createaccess($username)\nReturn a new \"psvnfsaccesst\" object representing $username. $username is presumed to\nhave been authenticated by the caller.\n\npsvnfst\n$fs->begintxn($rev)\nCreates a new transaction in the repository, and returns a \"psvnfstxnt\" object\nrepresenting it. The new transaction's base revision will be $rev, which should be a number.\n\n$fs->changerevprop\n$fs->generatelocktoken()\nGenerate a unique lock-token using $fs.\n\nTODO - translate this to apply to Perl: This can be used in to populate lock->token before\ncalling svnfsattachlock().\n\n$fs->getaccess()\nThe filesystem's current access context, as a \"psvnfsaccesst\" object. Returns undef if\nno access context has been set with the \"setaccess()\" method.\n\n$fs->getlock\n$fs->getlocks\n$fs->getuuid()\nThe UUID associated with $fs.\n\n$fs->listtransactions()\nA reference to an array of all currently active transactions in the filesystem. Each one is\na string containing the transaction's ID, suitable for passing to \"$fs->opentxn()\".\n\n$fs->lock\n$fs->opentxn($name)\nGet a transaction in the repository by name. Returns a \"psvnfstxnt\" object.\n\n$fs->revisionprop($rev, $propname)\nThe value of revision property $propname in revision $rev.\n\n$fs->revisionproplist($rev)\nA hashref containing the names and values of all revision properties from revision $rev.\n\n$fs->revisionroot\n$fs->setaccess($access)\nAssociate an access context with an open filesystem.\n\nThis method can be run multiple times on the same open filesystem, in order to change the\nfilesystem access context for different filesystem operations. $access should be a\n\"psvnfsaccesst\" object, or undef to disassociate the current access context from the\nfilesystem.\n\n$fs->setuuid($uuid)\nAssociate $uuid with $fs.\n\n$fs->unlock\n$fs->youngestrev()\nReturn the number of the youngest revision in the filesystem. The oldest revision in any\nfilesystem is numbered zero.\n\npsvnfsroott\n$root->applytext\n$root->applytextdelta\n$root->changenodeprop($path, $propname, $value)\n$root->checkpath($path)\nKind of node at $path. A number which matches one of these constants: $SVN::Node::none,\n$SVN::Node::file, $SVN::Node::dir, $SVN::Node::unknown.\n\n$root->closeroot\n$root->closestcopy\n$root->copiedfrom\n$root->copy\n$root->delete\n$root->direntries\n$root->filecontents\n$root->filelength\n$root->filemd5checksum\n$root->fs()\nThe filesystem to which $root belongs, as a \"psvnfst\" object.\n\n$root->isdir($path)\nTrue if there is a node at $path which is a directory.\n\n$root->isfile($path)\nTrue if there is a node at $path which is a file.\n\n$root->isrevisionroot()\nTrue if the root comes from a revision (i.e., the contents has already been committed).\n\n$root->istxnroot()\nTrue if the root comes from a transaction.\n\n$root->makedir\n$root->makefile\n$root->nodecreatedpath($path)\n$root->nodecreatedrev($path)\n$root->nodehistory($path)\nTODO - psvnfshistoryt\n\n$root->nodeid($path)\n$root->nodeprop($path, $propname)\n$root->nodeproplist($path)\n$root->pathschanged()\nA reference to a hash indicating what changes are made in the root. The keys are the paths\nof the files changed, starting with \"/\" to indicate the top-level directory of the\nrepository. The values are \"psvnfspathchanget\" objects which contain information about\nwhat kind of changes are made.\n\n$root->revisionlink\n$root->revisionrootrevision\nRevision number of the revision the root comes from. For transaction roots, returns\n$SVN::Core::INVALIDREVNUM.\n\npsvnfshistoryt\n$history->location()\nIn list context, a list of two items: the path to the node whose history this is, and the\nrevision number in which it exists. In scalar context returns only the revision number.\n\n$history->prev($crosscopies)\n\npsvnfstxnt\n$txn->abort()\nAbort the transaction. Any changes made in $txn are discarded, and the filesystem is left\nunchanged.\n\nNote: This function first sets the state of $txn to 'dead', and then attempts to purge it\nand any related data from the filesystem. If some part of the cleanup process fails, $txn\nand some portion of its data may remain in the database after this function returns. Use\n\"$fs->purgetxn()\" to retry the transaction cleanup.\n\n$txn->baserevision()\nThe transaction's base revision number.\n\n$txn->changeprop($name, $value)\nAdd, change, or remove a property from the transaction. If $value is \"undef\" then the\nproperty $name is removed, if it exists. Otherwise the property $name is set to the new\nvalue.\n\n$txn->commit\n$txn->name()\nFull name of the revision, in the same format as can be passed to \"$fs->opentxn()\".\n\n$txn->prop($name)\nThe value of the transaction's $name property.\n\n$txn->proplist()\nA reference to a hash containing all the transaction's properties, keyed by name.\n\n$txn->root()\nThe root directory of the transaction, as a \"psvnfsroott\" object.\n\npsvnfsaccesst\nSYNOPSIS\nmy $access = SVN::Fs::createaccess($username);\n\nmy $access = $fs->getaccess;\n$fs->setaccess($access);\n\nmy $username = $access->getusername;\n\n$access->addlocktoken($token);\n\nMETHODS\n$access->addlocktoken($token)\nPush a lock-token into the access context. The context remembers all tokens it receives, and\nmakes them available to fs functions.\n\n$access->getusername\nThe username represented by the access context.\n\nsvnfsdirentt\nAn object representing a directory entry. Values of this type are returned as the values in the\nhash returned by \"$root->direntries()\". They are like svndirentt objects, but have less\ninformation.\n\n$dirent->id()\nTODO\n\n$dirent->kind()\nNode kind. A number which matches one of these constants: $SVN::Node::none,\n$SVN::Node::file, $SVN::Node::dir, $SVN::Node::unknown.\n\n$dirent->name()\nThe filename of the directory entry.\n\npsvnfspathchanget\n$change->changekind()\nThe type of change made. A number which matches one of the following:\n\n$SVN::Fs::PathChange::modify\nContent at path modified.\n\n$SVN::Fs::PathChange::add\nPath added in transaction.\n\n$SVN::Fs::PathChange::delete\nPath removed in transaction.\n\n$SVN::Fs::PathChange::replace\nPath removed and re-added in transaction.\n\n$SVN::Fs::PathChange::reset\nIgnore all previous change items for path (internal-use only).\n\n$change->noderevid()\nNode revision id of changed path. A \"psvnfsidt\" object.\n\n$change->propmod()\nTrue if the properties were modified.\n\n$change->textmod()\nTrue if the text (content) was modified.\n",
            "subsections": []
        },
        "COPYRIGHT": {
            "content": "Licensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n",
            "subsections": []
        }
    },
    "summary": "SVN::Fs - Subversion filesystem functions",
    "flags": [],
    "examples": [],
    "see_also": []
}