' to create the pipes.
If one of the pipes already exists, LyX will assume that another LyX process
is already running and will not start the server.
- This means that if LyX crashes, or if for some other reason, a
+ If for some other reason, an unused
\begin_inset Quotes eld
\end_inset
\begin_inset Quotes erd
\end_inset
- pipe is left in existence when LyX closes, then LyX will not start the
- server.
- (This is bug 641.) You will need to delete the pipes manually and then restart
- LyX.
+ pipe is left in existence when LyX closes, then LyX will try to delete
+ it.
+ If this fails for some reason, you will need to delete the pipes manually
+ and then restart LyX.
\end_layout
\begin_layout Standard
\end_layout
\begin_layout Standard
-Other than this, there are a few points to consider:
-\end_layout
-
-\begin_layout Itemize
-Both server and clients must run on UNIX or OS/2 machines.
- Communications between LyX on UNIX and clients on OS/2 or vice versa is
- not possible right now.
-\end_layout
-
-\begin_layout Itemize
-On OS/2, only one client can connect to LyXServer at a time.
-\end_layout
-
-\begin_layout Itemize
-On OS/2, clients must open the input pipe with
+You can find a complete example client written in C in the source distribution
+ as
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-O_WRONLY
+development/lyxserver/server_monitor.c
\end_layout
\end_inset
- mode.
+.
\end_layout
\begin_layout Standard
-You can find a complete example client written in C in the source distribution
- as
+Another useful tool is command-line based client you will find in
\begin_inset Flex CharStyle:Code
status collapsed
\begin_layout Plain Layout
-development/lyxserver/server_monitor.c
+src/client/lyxclient
\end_layout
\end_inset
Control
\family default
submenu.
+ LyX was tested against RCS 5.7.
\end_layout
\begin_layout Subsubsection
\begin_layout Standard
CVS command:
\family typewriter
-cvs -q commit -m"<description>" <file-name>
+cvs -q commit -m"<description>" "<file-name>"
\end_layout
\begin_layout Subsubsection
submenu.
Please note that if you use password protected access to repository via
ssh, you will be asked in terminal window.
+ LyX was tested against SVN 1.4 and 1.5.
\end_layout
\begin_layout Subsubsection
\end_layout
\begin_layout Standard
-SVN command:
+SVN command:
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+In case locking is not enabled.
+ See Section
+\begin_inset CommandInset ref
+LatexCommand ref
+reference "subsec:SVN-File-Locking"
+
+\end_inset
+
+.
+\end_layout
+
+\end_inset
+
+
\family typewriter
svn commit -q -m"<description>" <file-name>
\end_layout
\end_layout
\begin_layout Standard
-SVN command:
+SVN command:
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+Ditto.
+\end_layout
+
+\end_inset
+
+
\family typewriter
svn update
\begin_inset Quotes eld
is shown in a browser.
\end_layout
+\begin_layout Subsubsection
+File Locking
+\begin_inset CommandInset label
+LatexCommand label
+name "subsec:SVN-File-Locking"
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+The file exchange through various revision control systems brings the problem
+ of merge conflicts in case two different users try to edit the same (parts
+ of) document.
+ When such conflict happens it needs manual resolving and one reasonable
+ alternative is to provide some kind of locking mechanism, which guarantees
+ that only one user is allowed to edit file at the given time.
+\end_layout
+
+\begin_layout Standard
+SVN has two mechanisms to provide such kind of mutual exclusivity for file
+ access - locks and automatical setting of write permissions based on
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+svn:needs-lock
+\end_layout
+
+\end_inset
+
+ file svn property.
+ In a case this property is detected for a given document LyX starts to
+ use SVN locks for document editing automatically and the whole check-in/out
+ mechanism switches to the same regimen as for RCS.
+ This in particular means there are two different modes how file is used
+ in LyX:
+\end_layout
+
+\begin_layout Itemize
+Unlocked state.
+ The loaded file is in the read-only mode.
+ For editation on needs to check-out.
+
+\emph on
+Check-out
+\emph default
+ consists of update from repository and gaining write lock.
+ If the lock is not possible to obtain, we remain in unlocked state.
+\end_layout
+
+\begin_layout Itemize
+Locked state.
+ The loaded file is in the 'normal' edit mode.
+ No other user is allowed to edit the file.
+
+\emph on
+Check-in
+\emph default
+ consists of commiting changes and releasing write-lock.
+ If no changes have been made to the document, no commit will be produced
+\begin_inset Foot
+status collapsed
+
+\begin_layout Plain Layout
+Don't be puzzled by the fact that you will be asked for commit message anyway.
+\end_layout
+
+\end_inset
+
+ and only the write-lock will be released.
+\end_layout
+
+\begin_layout Standard
+SVN commands:
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+Check-in:
+\family typewriter
+ svn commit -q -m"<description>" "<file-name>"
+\begin_inset Newline newline
+\end_inset
+
+svn unlock "<file-name>"
+\end_layout
+
+\begin_layout Labeling
+\labelwidthstring 00.00.0000
+Check-out:
+\family typewriter
+svn update "<file-name>"
+\begin_inset Newline newline
+\end_inset
+
+svn lock "<file-name>"
+\end_layout
+
+\begin_layout Subsection
+SVN and Windows Environment
+\end_layout
+
+\begin_layout Quote
+My inclination is to say that if the user cannot figure out the command
+ line operations on their own fairly quickly, they would be well advised
+ to use TortoiseSVN.
+ ---P.
+ A.
+ Rubin
+\end_layout
+
+\begin_layout Subsubsection
+Preparation
+\end_layout
+
+\begin_layout Standard
+In addition to installing LyX, and having access to a Subversion repository,
+ the user will need to install the Subversion client program.
+ A Windows installer for the client program is available from
+\begin_inset CommandInset href
+LatexCommand href
+name "CollabNet"
+target "http://www.collab.net/nonav/downloads/subversion/"
+
+\end_inset
+
+.
+ The user may also want to install
+\begin_inset CommandInset href
+LatexCommand href
+name "TortoiseSVN"
+target "http://tortoisesvn.tigris.org/"
+
+\end_inset
+
+, which integrates Subversion operations into the context (rightclick) menu
+ of Windows Explorer.
+ Operations done outside LyX will typically be more convenient using the
+ Explorer context menu.
+ Note that TortoiseSVN is not a replacement for the client program, which
+ is what LyX itself will use.
+\end_layout
+
+\begin_layout Subsubsection
+Bringing a document under Subversion control
+\end_layout
+
+\begin_layout Standard
+Before a LyX document can be brought under version control in Subversion,
+ its parent directory needs to be under version control.
+ If the document is being added to a project already in the repository,
+ this is accomplished by checking the project out to the directory where
+ the new document will be placed.
+ If the project itself is not yet under version control (for instance, if
+ this document starts a new project), the directory must be imported into
+ the repository.
+ This is done outside LyX.
+ Both import and checkout are easily accomplished from the Explorer context
+ menu using TortoiseSVN, or alternatively can be done using the command
+ line client at a DOS prompt.
+ The procedure for importing the project using TortoiseSVN is described
+ below, assuming an existing repository and a new project being started
+ in
+\family typewriter
+C:
+\backslash
+new project
+\family default
+.
+ For information on using the Subversion client program, run
+\family typewriter
+svn --help
+\family default
+in a DOS shell.
+\end_layout
+
+\begin_layout Enumerate
+Locate
+\family typewriter
+C:
+\backslash
+new project
+\family default
+in Windows Explorer, right click it, and select
+\family typewriter
+TortoiseSVN > Repo-browser
+\family default
+.
+ If necessary, adjust the URL for the repository, then click OK.
+\end_layout
+
+\begin_layout Enumerate
+Right click the level of the repository under which you want to place the
+ new project folder (typically the top level) and click
+\family typewriter
+Create folder\SpecialChar \ldots{}
+
+\family default
+ Supply a name for the project folder and click OK.
+ Add a message for the log file if desired, then click OK again.
+ The new project folder should appear in the repository.
+ Finally, click OK again to exit the repository browser.
+\end_layout
+
+\begin_layout Enumerate
+Once again right click
+\family typewriter
+C:
+\backslash
+new project
+\family default
+, this time selecting SVN Checkout\SpecialChar \ldots{}
+ Select the URL of the project folder
+ you just created in the repository, and set the checkout directory to
+\family typewriter
+C:
+\backslash
+new project.
+
+\family default
+ Click OK.
+ You will be warned about a non-empty folder; click OK to proceed.
+ You should now have a
+\family typewriter
+.svn
+\family default
+ directory under
+\family typewriter
+C:
+\backslash
+new project.
+\end_layout
+
+\begin_layout Enumerate
+Create or open your document in LyX and click
+\family sans
+\bar under
+F
+\bar default
+ile\SpecialChar \menuseparator
+
+\bar under
+V
+\bar default
+ersion
+\begin_inset space ~
+\end_inset
+
+Control\SpecialChar \menuseparator
+
+\bar under
+R
+\bar default
+egister.
+
+\family default
+Add a log message and click OK to commit the document to version control.
+\end_layout
+
+\begin_layout Standard
+From this point onward, you should have full functionality in the
+\family sans
+\bar under
+F
+\bar default
+ile\SpecialChar \menuseparator
+
+\bar under
+V
+\bar default
+ersion
+\begin_inset space ~
+\end_inset
+
+Control
+\family default
+ menu.
+ You also have the option of checking the document in and out, viewing its
+ history, etc.
+ using the TortoiseSVN context menu in Windows Explorer or the Subversion
+ client program from a command prompt.
+\end_layout
+
+\begin_layout Subsection
+Further tuning
+\end_layout
+
+\begin_layout Standard
+With the recent addition of the vc-command function LyX power users are
+ allowed to create their own commands for revision control.
+\end_layout
+
+\begin_layout Standard
+As an example you can see how two TortoiseSVN commands could be integrated
+ directly:
+\end_layout
+
+\begin_layout Description
+Commit:
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+vc-command DS "." "TortoiseProc /command:commit /path:$$p"
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Description
+Revert:
+\begin_inset Flex CharStyle:Code
+status collapsed
+
+\begin_layout Plain Layout
+vc-command DR "." "TortoiseProc /command:revert /path:$$p"
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
\begin_layout Section
Literate Programming
\end_layout