I've been having a problem for a while, that I just manually fix which is transferring read-only files on Windows. I tried the new beta 2.40.16 and it does the same thing. When I have a new read-only file created on a replica, unison will transfer the file to the other replica as a temp file and then fail during the renaming process with a "Permission Denied" error. As the same user running unison, I then can go into Windows explorer and rename the unison temp file to the proper name (after confirming the rename of a read-only file warning) and removing the hidden attribute and then everything is fine. Since the new beta doesn't address this, I guess it's time for a bug report. The problem appears to be that unison is unable to rename read-only files from Windows machines for some reason. Doing a -debug all gives this output:
[startup] Preferences:
ui = text
host =
server = false
prefsdocs = false
doc =
version = false
silent = false
dumbtty = false
testserver = false
rest = \\DCSS02\My Documents
rest = C:\Offline files from Server\MAE's Documents
rest = Documents
showprev = false
selftest = false
confirmmerge = false
retry = 0
repeat =
contactquietly = false
key =
label =
expert = false
height = 15
auto = true
maxthreads = 0
prefer = C:\Offline files from Server\MAE's Documents
force =
sortnewfirst = false
sortbysize = false
keeptempfilesaftermerge = false
diff = diff -u CURRENT2 CURRENT1
backupdir =
maxbackups = 2
backups = false
backupsuffix =
backupprefix = .bak.$VERSION.
backuploc = central
copymax = 1
copyquoterem = default
copythreshold = -1
copyprogrest = rsync --partial --append-verify --compress
copyprog = rsync --partial --inplace --compress
rsync = true
immutable = Path */Sent Reports/*
fastcheck = true
ignorelocks = false
dumparchives = false
ignorearchives = false
showarchive = false
rootsName =
fat = false
allHostsAreRunningWindows = false
someHostIsRunningWindows = false
ignore = Name *.bak
ignore = Name *.tmp
confirmbigdel = true
batch = true
root = \\DCSS02\My Documents
root = C:\Offline files from Server\MAE's Documents
killserver = false
halfduplex = false
stream = true
addversionno = false
servercmd =
sshargs =
rshargs =
rshcmd = rsh
sshcmd = ssh
xferbycopying = true
sshversion =
ignoreinodenumbers = false
links-aux = true
links = default
times = true
group = true
owner = true
numericids = false
dontchmod = false
perms = 128
rsrc-aux = false
rsrc = default
maxerrors = 1
unicodeCS = false
unicodeEnc = false
unicode = default
someHostIsInsensitive = false
ignorecase = default
timers = false
terse = false
logfile = C:\Documents and Settings\mae\unison.log
log = true
debugtimes = false
debug = all
addprefsto =
[recon] root2direction called to choose C:\Offline files from Server\MAE's Documents from C:\Offline files from Server\MAE's Documents and \\DCSS02\My Documents
Contacting server...
[globals] Checking path '' for expansions
[startup] Roots:
C:\Offline files from Server\MAE's Documents
\\DCSS02\My Documents
i.e.
C:\Offline files from Server\MAE's Documents
\\DCSS02\My Documents
i.e. (in canonical order)
//DCSS02/My Documents/
C:/Offline files from Server/MAE's Documents
...
[BGN] Copying DCS Tools/Service Reports/Sent Reports/41130416.doc from C:/Offline files from Server/MAE's Documents to //DCSS02/My Documents/
[files] copy C:/Offline files from Server/MAE's Documents DCS Tools/Service Reports/Sent Reports/41130416.doc ---> //DCSS02/My Documents/ DCS Tools/Service Reports/Sent Reports/41130416.doc
[fspath] Os.findWorkingDir(//DCSS02/My Documents/,DCS Tools/Service Reports/Sent Reports/41130416.doc) = (//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports,41130416.doc)
[update] updateArchive //DCSS02/My Documents/ DCS Tools/Service Reports/Sent Reports/41130416.doc
[pred] ignore 'DCS Tools/Service Reports/Sent Reports/41130416.doc' = false
[files] copyRec DCS Tools/Service Reports/Sent Reports/41130416.doc --> .unison.41130416.doc.d0bff5.unison.tmp (really to 41130416.doc)
[copy] copyRegFile(C:/Offline files from Server/MAE's Documents,DCS Tools/Service Reports/Sent Reports/41130416.doc) -> (//DCSS02/My Documents/,41130416.doc,//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports,.unison.41130416.doc.d0bff5.unison.tmp,modified on 2010-04-22 at 11:23:29 size 44544 read-only)
[copy] Copy.localFile C:/Offline files from Server/MAE's Documents / DCS Tools/Service Reports/Sent Reports/41130416.doc to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports / .unison.41130416.doc.d0bff5.unison.tmp
[copy] Removing old temp file //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports / .unison.41130416.doc.d0bff5.unison.tmp
[props] Setting permissions for //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to read-only (400/200)
[files] rename(root=//DCSS02/My Documents/, pathOld=.unison.41130416.doc.d0bff5.unison.tmp, pathNew=41130416.doc)
[update] checkNoUpdates //DCSS02/My Documents/ DCS Tools/Service Reports/Sent Reports/41130416.doc
[update] buildUpdate: //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc
[update] buildUpdate -> Absent and no archive
[files] Renaming .unison.41130416.doc.d0bff5.unison.tmp to 41130416.doc in //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports; root is //DCSS02/My Documents/
[files] rename: moveFirst=false
[stasher] backup: //DCSS02/My Documents/ / DCS Tools/Service Reports/Sent Reports/41130416.doc
[fspath] Os.findWorkingDir(//DCSS02/My Documents/,DCS Tools/Service Reports/Sent Reports/41130416.doc) = (//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports,41130416.doc)
[stasher] File DCS Tools/Service Reports/Sent Reports/41130416.doc in //DCSS02/My Documents/ does not exist, so no need to back up
[os] rename //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc
[exn] Converting a Unix error to Transient:
Error in renaming //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc:
Permission denied [rename(//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp)]
[exn] In renaming //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc: Propagating Transient error
Failed: Error in renaming //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc:
Permission denied [rename(//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp)]
100% 00:00 ETAFailed [DCS Tools/Service Reports/Sent Reports/41130416.doc]: Error in renaming //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp to //DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/41130416.doc:
Permission denied [rename(//DCSS02/My Documents/DCS Tools/Service Reports/Sent Reports/.unison.41130416.doc.d0bff5.unison.tmp)]
UNISON 2.40.16 finished propagating changes at 12:26:06.59 on 06 May 2010
I'm not sure if this is part of the problem, but the DCSS02 server is a Samba share on a CentOS 5.4 Linux box. I have another CentOS server that unison then syncs to keep the servers synced to each other and the process goes without a glitch, so it is definitely a problem on Windows and not on Linux. Let me know if there is anything else I can do to help track this down. Unfortunately, I'm not setup to compile on Windows, so I am using the binary provided on Alan's website made by Karl, and thus don't have the ability to apply any patches.