'\" t
.\"     Title: rofiles-fuse
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 04/13/2026
.\"    Manual: rofiles-fuse
.\"    Source: rofiles-fuse
.\"  Language: English
.\"
.TH "ROFILES\-FUSE" "1" "" "rofiles-fuse" "rofiles-fuse"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
rofiles-fuse \- Use FUSE to create a view where directories are writable, files are immutable
.SH "SYNOPSIS"
.HP \w'\fBrofiles\-fuse\ SRCDIR\ MNTPOINT\fR\ 'u
\fBrofiles\-fuse SRCDIR MNTPOINT\fR
.SH "DESCRIPTION"
.PP
Creating a checkout from an OSTree repository by default uses hard links, which means an in\-place mutation to any file corrupts the repository and all checkouts\&. This can be problematic if one wishes to run arbitrary programs against such a checkout\&. For example, RPM
%post
scripts or equivalent\&.
.PP
In the case where one wants to create a tree commit derived from other content, using
\fBrofiles\-fuse\fR
in concert with
\fBostree commit \-\-link\-checkout\-speedup\fR
(or the underlying API) can ensure that only new files are checksummed\&.
.SH "EXAMPLE: UPDATE AN OSTREE COMMIT"
.sp
.if n \{\
.RS 4
.\}
.nf
# Initialize a checkout and mount
$ ostree \-\-repo=repo checkout somebranch branch\-checkout
$ mkdir mnt
$ rofiles\-fuse branch\-checkout mnt

# Now, arbitrary changes to mnt/ are reflected in branch\-checkout
$ echo somenewcontent > mnt/anewfile
$ mkdir mnt/anewdir
$ rm mnt/someoriginalcontent \-rf

# Commit and cleanup
$ fusermount \-u mnt
$ ostree \-\-repo=repo commit \-\-link\-checkout\-speedup \-b somebranch \-s \*(AqCommit new content\*(Aq \-\-tree=dir=branch\-checkout
$ rm mnt branch\-checkout \-rf
	
.fi
.if n \{\
.RE
.\}
.SH "SEE ALSO"
.PP
\fBostree\fR(1)
