====== FileSystem ======

==== Directories, VCS and tar.gz support ====

* Move Zim/File.pm to Zim/Fs.pm
	* FS.pm should contain Zim::FS::File and Zim::FS::Dir
	* No need to cache dirs globally as long as proper OO interface is used !!
* Store should use OO interface on central dir object
	* By default Files inherits dir from parent - so parent can set subclass of dir object
* Store should have a file API
	* For GUI interface, attach, open file etc.
	* For internal interface
		* use Store::Files file interface to get images
			* this makes it easy to overload with DBI subclass later
	* Remeber Page != File
		* [[EditSource]] uses tmp file based on get_source
		* [[OpenFolder]] should open attachment folder (if any)
			* disable if not available
	* Always set root for pages explicitly in repository config
		* use "." if the config file is inside this directory
	* Always set document_root, default set to same dir as pages
		* keep literal string - up to the user to set absolute or relative
			* resolve when loading
		* show explicit in "new notebook" dialog
			* merge "new notebook" and "notebook properties"
* Page should have a file API
	* use dir object in Store / Repository if any
	* check file
		* checks if file is within repository controlled dir(s)
			* call check file on repository (?)
		* needed to do correct OO lookup
		* GUI can still use simple File object for files outside this dir
		* merge with function to make paths relative to page or notebook
	* get attachment folder
		* replace "base" logic in parse tree
	* get attachment
	* make sure that the export "media" options work nicely together with attachments in document root
* VCS modules should subclass Zim::FS
	* E.g Zim::FS::Bazaar::Dir and Zim::FS::Bazaar::File
	* All file access should go through central dir object
	* Maybe have base VCS class to subclass FS and call handlers on subclass
		* option to commit on save page or commit on save notebook
* Module for tar.gz access should consider zip file a read-only dir
	* probably cache file index
	* completely transparent file access for other modules

* VCS GUI
	* In new repro / repro properties an "advanced" expander
		* dropdown with known VCS systems
		* radio for commit on save page (hard save) vs commit on save notebook (close/open app)
	* Still need to customize GUI controls per VCS, provide action list from data backend to GUI ?
	* No administration tools for VCS
	* Page needs to know that source is versioned
		* ability to get a list of revisions
		* ability to get a previous revision (read-only)
	* ability to list deleted files ?
