Notes: 
 - also includes stuff these patches depend on
 - scrutiny requested... i don't really know if what i'm doing is
   right, and also I'm not running under Windows, so I can't
   tell if my code does the right thing (I do know it compiles,
   but that's about it)

This fixes Windows redirection of stdin/stdout to /dev/null.
The consequence of this fix is that putty breaks (because it
relies on stdin/stdout for user interaction), so I also
threw in some fanciness so that we could exec ssh without
the redirections.

Seems to work fine with OpenSSH and Putty on my Mac.

Fri Jul  7 07:41:34 CEST 2006  Eric Kow <[EMAIL PROTECTED]>
  * Exec improvements : Windows redirection, and more redirection control.
  
  - Implement ability to redirect to /dev/null under Windows
    (eivuokko on #darcs points out that it is NUL under Windows)
  
  - Add exec_ function, which does the same thing as exec,
    but allows redirection on stderr, and also allows us
    to NOT redirect stdin/stderr
  

Fri Jul  7 07:46:11 CEST 2006  Eric Kow <[EMAIL PROTECTED]>
  * Do not redirect to /dev/null when calling ssh.
  
  Redirection of stdin and stdout breaks putty, which uses these to
  interact with the user.  Quiet mode and redirecting stderr are good
  enough for making ssh silent.
  

New patches:

[Improved SSH ControlMaster check.
Eric Kow <[EMAIL PROTECTED]>**20060706201819
 
 Remove spurious error messages seen in issue200 and issue219.
 Fixes issue218.
 
] 
<
> {
hunk ./External.hs 17
 
 import List ( intersperse )
 import Monad ( liftM, when, zipWithM_ )
+import Data.Maybe ( isJust )
 import System ( ExitCode(..), system, getEnv )
 import IO ( hPutStr, hPutStrLn, hClose, hFlush, try, stdout )
 import System.IO.Error ( isDoesNotExistError )
hunk ./External.hs 42
 import FastPackedString ( PackedString, readFilePS, gzReadFilePS, writeFilePS,
                           hPutPS, unpackPS, linesPS, unlinesPS,
                           lengthPS, takePS, dropPS, packString,
-                          nullPS, nilPS, concatPS
+                          nullPS, nilPS, concatPS, substrPS,
                         )
 import Lock ( withTemp, withOpenTemp, readDocBinFile,
               canonFilename, writeBinFile, writeDocBinFile,
hunk ./External.hs 699
 -- Because of the unsafePerformIO above, this can be called at any
 -- point.  It cannot rely on any state, not even the current directory.
 hasSSHControlMasterIO :: IO Bool
-hasSSHControlMasterIO = do
-  (ssh, _) <- getSSHOnly SSH
-  -- If ssh has the ControlMaster feature, it will recognise the
-  -- the -O flag, but exit with status 255 because of the nonsense
-  -- command.  If it does not have the feature, it will simply dump
-  -- a help message on the screen and exit with 1.
-  sx <- exec ssh ["-O", "an_invalid_command"] "/dev/null" "/dev/null"
-  case sx of
-    ExitFailure 255 -> return True
-    _ -> return False
+hasSSHControlMasterIO =
+ do (ssh, _) <- getSSHOnly SSH
+    -- With OpenSSH and Putty, launching ssh with no arguments gives
+    -- us the help text.  We parse this text to determine if it
+    -- it supports the ControlMaster feature (right now this consists
+    -- of looking for the switch -O)
+    withTemp $ \ho -> do
+    exec ssh [] "/dev/null" ho
+    -- no reason to use a PackedString, but no reason not to either
+    liftM hasCM (readFilePS ho)
+ where
+    dashO = packString "-O "
+    hasCM = isJust . (substrPS dashO)
 
 -- | Launch an SSH control master in the background, if available.
 --   We don't have to wait for it or anything.
}
[Refactor calls to ssh/scp/sftp.
Eric Kow <[EMAIL PROTECTED]>**20060706202509
 
] 
<
> {
hunk ./External.hs 168
 
 copySSH :: String -> FilePath -> IO ()
 copySSH uRaw f = let u = escape_dollar uRaw in do
-                 (scp, scp_args) <- getSSH SCP u
-                 r <- exec scp (scp_args++[u,f])
-                      "/dev/null" "/dev/null"
+                 r <- runSSH SCP u [] [u,f] "/dev/null"
                  when (r /= ExitSuccess) $
                       fail $ "(scp) failed to fetch: " ++ u
     where {- '$' in filenames is troublesome for scp, for some reason.. -}
hunk ./External.hs 251
                                               "source files:"] ++ ns
 
 copySSHs :: String -> [String] -> FilePath -> IO ()
-copySSHs u ns d = do (sftp, sftp_args) <- getSSH SFTP u
-                     let path = drop 1 $ dropWhile (/= ':') u
+copySSHs u ns d = do let path = drop 1 $ dropWhile (/= ':') u
                          host = (takeWhile (/= ':') u)++":"
                          cd = "cd "++path++"\n"
                          input = cd++(unlines $ map ("get "++) ns)
hunk ./External.hs 259
                          withTemp $ \sftpoutput ->
                          do hPutStr th input
                             hClose th
-                            r <- exec sftp (sftp_args++["-b",tn,host])
-                                 "/dev/null" sftpoutput
+                            r <- runSSH SFTP u [] ["-b",tn,host] sftpoutput
                             let files = if length ns > 5
                                           then (take 5 ns) ++ ["and "
                                                ++ (show (length ns - 5)) ++ " more"]
hunk ./External.hs 338
 --   reading its output.  Return its ExitCode
 execSSH :: String -> String -> IO ExitCode
 execSSH remoteAddr command =
-    do (ssh, ssh_args) <- getSSH SSH remoteAddr
-       exec ssh (remoteAddr:ssh_args++[command]) "/dev/null" "/dev/null"
+  runSSH SSH remoteAddr [remoteAddr] [command] "/dev/null"
 
 pipeDoc_SSH_IgnoreError :: String -> [String] -> Doc -> IO Doc
 pipeDoc_SSH_IgnoreError remoteAddr args input =
hunk ./External.hs 648
   show SCP  = "scp"
   show SFTP = "sftp"
 
+runSSH :: SSHCmd -> String -> [String] -> [String] -> FilePath -> IO ExitCode
+runSSH cmd remoteAddr preArgs postArgs output =
+ do (ssh, args) <- getSSH cmd remoteAddr
+    exec ssh (preArgs ++ args ++ postArgs) "/dev/null" output
+
 -- | Return the command and arguments needed to run an ssh command
 --   along with any extra features like use of the control master.
 --   See 'getSSHOnly'
}
[Run ssh/scp/sftp quietly.
Eric Kow <[EMAIL PROTECTED]>**20060707025245
 
 This is useful for silencing Putty, and could also be for OpenSSH should
 we decide to stop redirecting to /dev/null.
 
] 
<
> {
hunk ./External.hs 667
     hasCmFeature <- doesFileExist cmPath
     let cm_args = if hasCmFeature then [ "-o ControlPath=" ++ cmPath ] else []
     --
-    return (ssh, ssh_args ++ cm_args)
+    return (ssh, "-q" : ssh_args ++ cm_args)
 
 -- | Return the command and arguments needed to run an ssh command.
 --   First try the appropriate darcs environment variable and SSH_PORT
}
[Exec improvements : Windows redirection, and more redirection control.
Eric Kow <[EMAIL PROTECTED]>**20060707054134
 
 - Implement ability to redirect to /dev/null under Windows
   (eivuokko on #darcs points out that it is NUL under Windows)
 
 - Add exec_ function, which does the same thing as exec,
   but allows redirection on stderr, and also allows us
   to NOT redirect stdin/stderr
 
] 
<
> {
hunk ./Exec.lhs 19
 
 \begin{code}
 {-# OPTIONS -fffi #-}
-module Exec ( exec, exec_interactive
+module Exec ( exec, exec_, exec_interactive
             ) where
 
 import System
hunk ./Exec.lhs 38
           wcss (s:ss) css = withCString s $ \cstr -> wcss ss (cstr:css)
 #endif
 
-exec :: String -> [String] -> FilePath -> FilePath -> IO ExitCode
+exec  :: String -> [String] -> FilePath -> FilePath -> IO ExitCode
+exec c args inp out = exec_ c args (Just inp) (Just out) Nothing
+
+-- lets you opt not to redirect streams, and to (optionally) redirect stderr
+exec_ :: String -> [String] -> Maybe FilePath -> Maybe FilePath -> Maybe FilePath -> IO ExitCode
 
 #ifdef WIN32
hunk ./Exec.lhs 45
-exec c args "/dev/null" "/dev/null" = system $ c++" "++careful_unwords args
-exec c args "/dev/null" out =
-  system $ c++" "++careful_unwords args++" > "++careful_unwords [out]
-exec c args inp "/dev/null" =
-  system $ c++" "++careful_unwords args++" < "++careful_unwords [inp]
-exec c args inp out =
-  system $ c++" "++careful_unwords args++" < "++careful_unwords [inp]++" > "++careful_unwords [out]
+exec_ c args minp mout merr =
+  let redirect side mp =
+        case mp of
+          Nothing          -> ""
+          Just "/dev/null" -> side ++ "NUL"
+          Just  p          -> side ++ careful_unwords [p]
+      redirectErr =
+        case merr of
+          Nothing -> "2>&1"
+          Just e  -> redirect " 2> " (Just e)
+  in system $ c ++" "++careful_unwords args
+                ++(redirect " < " minp)
+                ++(redirect " > " mout)
+                ++redirectErr
 
 careful_unwords :: [String] -> [Char]
 careful_unwords (a:as) = "\""++a++"\" "++ careful_unwords as
hunk ./Exec.lhs 64
 careful_unwords [] = ""
 #else
-exec c args inp out = do
+exec_ c args minp mout merr = do
   fval <- c_fork
hunk ./Exec.lhs 66
+  let -- set up stdin redirection if needed
+      withStdin job =
+       case minp of
+         Nothing  -> job
+         Just inp -> withCString inp $ \in_c -> do
+                       fdin <- open_read in_c
+                       c_dup2 fdin 0
+                       job
+      -- set up stdout/stderr redirection if needed
+      withStdout job =
+       case mout of
+        -- no stdout redirection
+        Nothing ->
+         case merr of
+           Nothing -> job
+           Just e  -> withCString e $ \err_c -> do
+                        fderr <- open_write err_c
+                        c_dup2 fderr 2
+                        job
+        -- stdout redirection
+        Just out -> withCString out $ \out_c -> do
+         fdout <- open_write out_c
+         c_dup2 fdout 1
+         case merr of
+           Nothing -> do c_dup2 fdout 2 -- stderr to stdout
+                         job
+           Just e  -> withCString e $ \err_c -> do
+                         fderr <- open_write err_c
+                         c_dup2 fderr 2
+                         job
+  -- fork and go
   case fval of
      -1 -> return $ ExitFailure $ 1
hunk ./Exec.lhs 99
-     0 -> withCString inp $ \in_c ->
-          withCString out $ \out_c ->
+     0 -> withStdin $ withStdout $
           withCString c $ \c_c ->
           withCStrings (c:args) $ \c_args -> do
hunk ./Exec.lhs 102
-              fdin <- open_read in_c
-              fdout <- open_write out_c
-              c_dup2 fdout 1
-              c_dup2 fdout 2
-              c_dup2 fdin 0
-              -- execvp only returns if there is an error:
-              ExitFailure `liftM` execvp_no_vtalarm c_c c_args
+                -- execvp only returns if there is an error:
+                ExitFailure `liftM` execvp_no_vtalarm c_c c_args
      pid -> do ecode <- smart_wait pid
                if ecode == 0 then return ExitSuccess
                              else return $ ExitFailure ecode
}
[Do not redirect to /dev/null when calling ssh.
Eric Kow <[EMAIL PROTECTED]>**20060707054611
 
 Redirection of stdin and stdout breaks putty, which uses these to
 interact with the user.  Quiet mode and redirecting stderr are good
 enough for making ssh silent.
 
] 
<
[Exec improvements : Windows redirection, and more redirection control.
Eric Kow <[EMAIL PROTECTED]>**20060707054134
 
 - Implement ability to redirect to /dev/null under Windows
   (eivuokko on #darcs points out that it is NUL under Windows)
 
 - Add exec_ function, which does the same thing as exec,
   but allows redirection on stderr, and also allows us
   to NOT redirect stdin/stderr
 
] 
> {
hunk ./External.hs 52
 import Autoconf ( have_libcurl, have_sendmail, have_mapi, sendmail_path, darcs_version )
 import Curl ( copyUrl )
 import Curl ( Cachable(..) )
-import Exec ( exec )
+import Exec ( exec, exec_ )
 import DarcsURL ( is_file, is_url, is_ssh )
 import DarcsUtils ( catchall )
 import Printer ( Doc, hPutDoc, hPutDocLn, ($$), (<+>), renderPS,
hunk ./External.hs 168
 
 copySSH :: String -> FilePath -> IO ()
 copySSH uRaw f = let u = escape_dollar uRaw in do
-                 r <- runSSH SCP u [] [u,f] "/dev/null"
+                 r <- runSSH SCP u [] [u,f] Nothing
                  when (r /= ExitSuccess) $
                       fail $ "(scp) failed to fetch: " ++ u
     where {- '$' in filenames is troublesome for scp, for some reason.. -}
hunk ./External.hs 259
                          withTemp $ \sftpoutput ->
                          do hPutStr th input
                             hClose th
-                            r <- runSSH SFTP u [] ["-b",tn,host] sftpoutput
+                            r <- runSSH SFTP u [] ["-b",tn,host] (Just sftpoutput)
                             let files = if length ns > 5
                                           then (take 5 ns) ++ ["and "
                                                ++ (show (length ns - 5)) ++ " more"]
hunk ./External.hs 338
 --   reading its output.  Return its ExitCode
 execSSH :: String -> String -> IO ExitCode
 execSSH remoteAddr command =
-  runSSH SSH remoteAddr [remoteAddr] [command] "/dev/null"
+  runSSH SSH remoteAddr [remoteAddr] [command] Nothing
 
 pipeDoc_SSH_IgnoreError :: String -> [String] -> Doc -> IO Doc
 pipeDoc_SSH_IgnoreError remoteAddr args input =
hunk ./External.hs 648
   show SCP  = "scp"
   show SFTP = "sftp"
 
-runSSH :: SSHCmd -> String -> [String] -> [String] -> FilePath -> IO ExitCode
-runSSH cmd remoteAddr preArgs postArgs output =
+runSSH :: SSHCmd -> String -> [String] -> [String] -> Maybe FilePath -> IO ExitCode
+runSSH cmd remoteAddr preArgs postArgs mout =
  do (ssh, args) <- getSSH cmd remoteAddr
hunk ./External.hs 651
-    exec ssh (preArgs ++ args ++ postArgs) "/dev/null" output
+    exec_ ssh (preArgs ++ args ++ postArgs) Nothing mout (Just "/dev/null")
 
 -- | Return the command and arguments needed to run an ssh command
 --   along with any extra features like use of the control master.
}

Context:

[Added up links in web interface.
Peter Stuifzand <[EMAIL PROTECTED]>**20060610082238
 Added a link to the 'projects' part of the cgi repository interface, so that
 you go back to the project list.
] 
[Merge makefile targets test_perl and test_shell into test_scripts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060607223134
 This should keep parallel make from breaking.
] 
[bump version to 1.0.8pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20060522122655] 
[Add warning to Eric's SSHControlMaster rework.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060528194136] 
[Only launch SSH control master on demand (fixes issue171)
Eric Kow <[EMAIL PROTECTED]>**20060528093000
 
 A secondary benefit is that this encapsulates the use of the control
 master functionality and consequently simplifies calling ssh.  There is
 no need to deal with the details of launching or exiting the control
 master.
 
] 
[Add a test suite for calling external programs.
Eric Kow <[EMAIL PROTECTED]>**20060521045407
 
 For now this only includes a test for ssh (issue171).
 
] 
[Fail with a sensible message when there is no default repository to pull from.
[EMAIL PROTECTED] 
[TAG 1.0.7
Tommy Pettersson <[EMAIL PROTECTED]>**20060513171438] 
[make 1.0.7 latest stable source on web page
Tommy Pettersson <[EMAIL PROTECTED]>**20060513000703] 
[add some entries to the change log
Tommy Pettersson <[EMAIL PROTECTED]>**20060512235752] 
[bump version to 1.0.7
Tommy Pettersson <[EMAIL PROTECTED]>**20060512235738] 
[TAG 1.0.7rc1
Tommy Pettersson <[EMAIL PROTECTED]>**20060508101408] 
[bump version to 1.0.7rc1
Tommy Pettersson <[EMAIL PROTECTED]>**20060508101349] 
[Extend test suite for patch matching.
Eric Kow <[EMAIL PROTECTED]>**20060513192501
 
] 
[Implement help --match (issue91).
Eric Kow <[EMAIL PROTECTED]>**20060513185610
 
 Also, refactor matching code in a way that encourages developers
 to document for help --match any new matchers they create.
 
] 
[Replace dateparser.sh with more general match.pl for testing --match.
Eric Kow <[EMAIL PROTECTED]>**20060513104942
 
] 
[Add tests for pristine error and quiet mode when removing a directory.
Eric Kow <[EMAIL PROTECTED]>**20060513100021] 
[Suppress non-empty dir warning if Quiet.
Eric Kow <[EMAIL PROTECTED]>**20060513053456] 
[Replace test rmdir.sh with rmdir.pl.
Eric Kow <[EMAIL PROTECTED]>**20060513043823] 
[fix error is is_pipe test in error reporting. (fixes Issue160)
David Roundy <[EMAIL PROTECTED]>**20060501142114
 The trouble was that Ian (quite naturally) assumed that my C function
 stdout_is_a_pipe returned nonzero for true, whereas for some very, very
 backwards reason it returned zero for true, and its result was properly
 interpreted.  So I caused this bug by my (unexplained) backwards
 programming, but it was introduced when Ian refactored the C code.  :(
] 
[Add forgotten file umask.h.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060423174844] 
[TAG 1.0.7pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20060427095905] 
[Add --umask to all commands that write to the current repository.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060407195655] 
[Add option --umask.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060407194552] 
[Actually switch umasks in withRepoLock.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060407194202] 
[Implement withUMask.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060407193312] 
[Add umask.c.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060407193255] 
[Propagate opts to withRepoLock.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060325190622] 
[Provide some error reporting for remote identifyRepository.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060325234958] 
[Note on sftp usage and other fixes.
Dave Love <[EMAIL PROTECTED]>**20060403122032] 
[Allow for non-empty subdir when applying rmdir patch to working dir.
Eric Kow <[EMAIL PROTECTED]>**20060405231909
 
 Do not delete the directory; just print a warning. Fix for issue154.
 
] 
[Add a 'is working dir' flag to PatchApply.apply.
Eric Kow <[EMAIL PROTECTED]>**20060405225201
 
 Half of the solution to issue154.  This is so that we can have different
 behaviours when applying to the working directory, as opposed to the
 pristine tree.
 
] 
[Tidy help command.
Eric Kow <[EMAIL PROTECTED]>**20060402225837] 
[Display list of subcommands when getting help on a supercommand.
Eric Kow <[EMAIL PROTECTED]>**20060402190038] 
[Add test case for issue154 (rmdir on non-empty subdir in working).
Eric Kow <[EMAIL PROTECTED]>**20060402134933] 
[write with fancyPrinters to pager (issue108)
Tommy Pettersson <[EMAIL PROTECTED]>**20060319234103] 
[make Printers choose policy for supplied file handle
Tommy Pettersson <[EMAIL PROTECTED]>**20060319233723] 
[Added additional common binary image file formats to binary regex.
Daniel Freedman <[EMAIL PROTECTED]>**20060321002940] 
[Added a RSS link to common.xslt.
Peter Stuifzand <[EMAIL PROTECTED]>**20060321222242
 With the RSS link in the head tag it is easier for RSS reader to find the 
 link.
] 
[Add --logfile and --delete-logfile options to send command.
Zachary P. Landau <[EMAIL PROTECTED]>**20060114214510] 
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060325182457] 
[docfix, pull can take more than one URL
Tommy Pettersson <[EMAIL PROTECTED]>**20060319193913] 
[Use withRepoLock systematically in Repository.lhs.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060303175729
 Unlike the other functions in Repository.lhs, get_unrecorded and sync_repo
 used to require that the caller chdir to the right place.  This fixes this
 inconsistency.
] 
[Add -i as an alias for --interactive.
Zachary P. Landau <[EMAIL PROTECTED]>**20060302184640] 
[remove redundant import.
David Roundy <[EMAIL PROTECTED]>**20060318122848] 
[Refactor external-merge feature to use CommandLine.parseCmd.
Eric Kow <[EMAIL PROTECTED]>**20060320235932
 
] 
[Add a flag to disable use of SSH control master.
Eric Kow <[EMAIL PROTECTED]>**20060320235217] 
[More detailed comments for SSH control master.
Eric Kow <[EMAIL PROTECTED]>**20060320235200] 
[Fix a button bar layout bug (wxDarcs).
Eric Kow <[EMAIL PROTECTED]>**20060307033857] 
[Add a --diff-command flag.
Eric Kow <[EMAIL PROTECTED]>**20060318001522] 
[Multiplex transactions over a single ssh connection (issue32).
Eric Kow <[EMAIL PROTECTED]>**20060317233337
 
 Eliminates the need to type your password a million times.  This
 requires a recent version of OpenSSH with the ControlMaster feature, but
 it is harmless if you do not have it.
 
] 
[Refactor calls to ssh.
Eric Kow <[EMAIL PROTECTED]>**20060317214816
 
 Also, separate out the argument for the remote address in some calls.
 This makes it easier to implement functionality like use of the 
 ControlMaster feature.
 
] 
[Minor simplifications of DateMatcher.lhs.
Eric Kow <[EMAIL PROTECTED]>**20060317212529] 
[Minor tweaks to manual.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060307143305] 
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060307135524] 
[make "-f" a synonym for "--force"
[EMAIL PROTECTED] 
[Correct gui patch selection for commands like obliterate.
Eric Kow <[EMAIL PROTECTED]>**20060307032303
 
 The gui patch selection system did not reverse/invert patches in
 commands that need this behaviour (obliterate, unrecord).  We solve
 the problem by relying on code which factorises common behaviour 
 between the text and graphical patch selection systems.
 
] 
[Refactor output end of SelectChanges.
Eric Kow <[EMAIL PROTECTED]>**20060307032052] 
[Fix layout bug in OS X Tiger (wxDarcs).
Eric Kow <[EMAIL PROTECTED]>**20060302142517
 
 Seems the solution to all gui ills is to add another panel.
 
] 
[Resolve darcs gui conflict.
Eric Kow <[EMAIL PROTECTED]>**20060302010257
 
 Pull.lhs was conflicting with Edwin Thomson's 2005-12-08 patch
 "Don't make merge folders when we don't need them".  This
 patch merges the changes.
 
] 
[Correct copyFrameworks script (gui, osx).
[EMAIL PROTECTED]
 
 All binaries and libraries have some entry which tells what libraries
 they are linked against.  Any libraries which are not on the vanilla OS
 X need to be copied into the application bundle so that it will work 
 anywhere.  Whilst copying the libraries, you also need to change the
 entries refering to these libraries so that they point to the
 application bundle, and not their original path (e.g. /usr/local/lib).
 I had done this for the binary, but not for the libraries being copied.
 
 Also, make the copying of libraries recursive.
 
] 
[Correct compilation of gui code in console mode.
Eric Kow <[EMAIL PROTECTED]>**20060131013107] 
[Scripts and makefile target to distribute wxDarcs on OS X.
Eric Kow <[EMAIL PROTECTED]>**20060131012439
 
 Creates an application bundle and a .dmg file.
 
] 
[Add a standalone graphical interface.
Eric Kow <[EMAIL PROTECTED]>**20060131012036
 
 The gui code prior to this patch allows graphical darcs forms to be run from
 the command line.  This builds off that functionality by adding a graphical
 front-end, allowing users to access these forms with a click of a button.
 In other words, this allows users to run darcs without the command line.
 
 Much more work will have to be done on this front end before it is as usable as
 the command-line darcs, but hopefully patch shall kick things off.
 
] 
[Send darcs commands' output to log (gui only).
Eric Kow <[EMAIL PROTECTED]>**20060130232608
 
 If running in SubGui mode, darcs commands send their output to wxWidgets log
 instead of stdout, because under the standalone gui, this output would
 otherwise be hidden.
 
] 
[Add a lock mechanism for graphical interfaces.
Eric Kow <[EMAIL PROTECTED]>**20060130215323
 
 Add a distinct lock for the GUI.  What makes this lock different is
 that taking and setting the lock are done seperately, instead of 
 using an atomic operation like withRepoLock.  This allows us to 
 assign the releasing of the lock to GUI events like closing a window.
 
 This would be useful for a standalone interface to prevent weird 
 race conditions, for example, from mulitple Record windows being open.
 Note that withLock is not enough for this purpose; the lock would 
 already be released before the user even touches the window.
 
] 
[Make unpull, unrecord, obliterate accept --gui.
Eric Kow <[EMAIL PROTECTED]>**20060130201041
 
 This also has the side effect of them accepting --interactive.
 
] 
[Abstract the patch-viewer widget.
Eric Kow <[EMAIL PROTECTED]>**20060130153753
 
 We shouldn't care how the patch-viewer is implemented.
 
] 
[Add a SubGui flag.
Eric Kow <[EMAIL PROTECTED]>**20060130153530
 
 The SubGui flag enables commands to be run under a main GUI. 
 The idea is that wxhaskell's start function really does not
 like to be called more than once, so we avoid calling it 
 a second time if a main gui already has done so.
 
] 
[Remove tabs in graphical output.
Eric Kow <[EMAIL PROTECTED]>**20060130134403
 
 Wxhaskell has trouble when tabs are included in the text to be
 displayed.  We quietly convert these tabs into spaces.
 
] 
[(GUI) Create GuiUtils.lhs, move tree widget code to it.
Eric Kow <[EMAIL PROTECTED]>**20060129004445
 
 Also, simplify the tree widget code.  This file will provide a 
 central place for various graphical odds and ends.  
 
] 
[Refactor calls to Rez in makefile (OS X).
Eric Kow <[EMAIL PROTECTED]>**20060125235731] 
[Fix layout bugs in GUI (buttons were being hidden).
Eric Kow <[EMAIL PROTECTED]>**20060122215729
 
 For some reason, scrolled windows seem to need to be inside of panels
 for them to behave correctly when their parent windows are resized. 
 Otherwise they hide the button bars used in Record and SelectChanges.
 
 Also, slightly simplify GUI code to avoid proliferation of widgets.
 
] 
[Fix conflict between Zachary P. Landau's and my patch.
Eric Kow <[EMAIL PROTECTED]>**20060306010743
 
] 
[Refactor SelectChanges.lhs.
Eric Kow <[EMAIL PROTECTED]>**20060306004421
 
 1. Rearrange parameters of with_any_selected_changes to favour eta reduction.
 2. Refactor type definitions for with_selected...changes functions to
    indicate that it's all the same thing.
 3. Separate patch counting with decisions about which patches we should 
    consider.
 
] 
[Perl tests: get rid of 'darcs: <stdin>: hGetLine: end of file' messages
Marnix Klooster <[EMAIL PROTECTED]>**20060304180420
 
 These were printed because 'n' was not answered to 'Really unpull' and 'Really
 obliterate' questions.
 
 Also, do not send superfluous '\n' to darcs in echo_to_darcs().
] 
[Test pull.pl, CREATE_DIR_ERROR: removed TODO now that directory name is printed in error message
Marnix Klooster <[EMAIL PROTECTED]>**20060304164033
 Also removes a superfluous (and erroneous) chdir statement, which tried to
 change to non-existing directory templ (last character was ell instead of one).
 
 Also improves the description of this test.
] 
[Make darcs exit after last patch in changes --interactive.
Zachary P. Landau <[EMAIL PROTECTED]>**20060303014534
 Currently, hitting 'j' on the last patch in changes --interactive has
 no effect.  This patch will cause darcs to exit, making the command
 more consistent with an interactive pull.
] 
[Fix crash when using changes --interactive with --patch or --match
Zachary P. Landau <[EMAIL PROTECTED]>**20060303013820] 
[Chdir systematically in Repository.lhs.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060303181824
 Unlike the other functions in Repository.lhs, applyToPristine, get_unrecorded
 and sync_repo used to require that the caller chdir to the right place.
 This fixes that inconsistency.
] 
[Improved support for absolute paths (issue39)
Eric Kow <[EMAIL PROTECTED]>**20060304111532
 
 This modifies fix_maybe_absolute so that if you specify a repository
 directory, any absolute paths prefixed by this directory are converted
 to be ones relative to the repodir.
 
 The following commands now account for arguments which are absolute
 paths but refer to files in the repository:
     add, amend-record, annotate, changes, diff,
     mv, record, remove, replace, revert, whatsnew
 
 The following commands are not actually affected, though the code 
 is changed: 
     apply, push, pull, put.
 
 This patch also slightly refactors FilePathUtils.lhs
 
] 
[Enable tests for absolute paths.
Eric Kow <[EMAIL PROTECTED]>**20060304104355] 
[Extend argument substitution for --external-merge
Daan Leijen <[EMAIL PROTECTED]>**20060214062042
 Argument substitution used to work on words at the time which made
 it difficult to use Windows merge tools like the supernice tortoiseMerge.
 Now, substitution of "%a" etc. takes place everywhere and we can write:
 
 --external-merge 'tortoiseMerge /base:"%a" /mine:"%1" /theirs:"%2" /merged:"%o"
 
 To make it complete, we substitute "%%" to "%".
] 
[boring += autom4te.cache/
Kirill Smelkov <[EMAIL PROTECTED]>**20060130071416] 
[omit the "Finished getting." message when --quiet
Simon Marlow <[EMAIL PROTECTED]>**20060120074731] 
[Enable GUI on MacOS X with /Developer/Tools/Rez.
Eric Kow <[EMAIL PROTECTED]>**20060121004325
 
 Without this command, the darcs GUI does not take focus under MacOS X.
 
] 
[Reimplement flexible GUI widget for whatsnew.
Eric Kow <[EMAIL PROTECTED]>**20060121001049
 
 The current implementation was not working, maybe as a result of
 a wxhaskell or WxWidgets bug in which resized widgets lose their
 new sizes when the parent window is resized.
 
 The new implementation works around this by displaying patches in
 tree form.  Each node is a patch summary, and expanding that node
 reveals the full patch.
 
] 
[Freshen GUI code so that it compiles.
Eric Kow <[EMAIL PROTECTED]>**20060121000818] 
[Don't make merge folders when we don't need them
[EMAIL PROTECTED]
 
] 
[Add "y" and "n" commands to changes --interactive.
Zachary P. Landau <[EMAIL PROTECTED]>**20060115054548] 
[Save email description file if a send fails
Zachary P. Landau <[EMAIL PROTECTED]>**20060114204826] 
[posthook success/failure messages with --verbose only
Jason Dagit <[EMAIL PROTECTED]>**20060113204930
 Changes behavior of posthook status messages.  Use --verbose to have
 posthook status messages.  Error reporting can be turned off with
 --quiet.  Note:  The command run by the posthook might still generate
 output, this patch does not address this output.
] 
[bump version to 1.0.7pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20060301000323] 
[show 1.0.6 as latest stable source on web page
Tommy Pettersson <[EMAIL PROTECTED]>**20060301000158
 Forgot this, again :-/
] 
[removed last bits of create-repo from makefile (issue14)
Jason Dagit <[EMAIL PROTECTED]>**20060113212432] 
[TAG 1.0.6
Tommy Pettersson <[EMAIL PROTECTED]>**20060228111841] 
[bump version to 1.0.6
Tommy Pettersson <[EMAIL PROTECTED]>**20060228111833] 
[fix bug in release state version extraction
Tommy Pettersson <[EMAIL PROTECTED]>**20060226182419
 Save result of old regexp match before matching new regexps.
] 
[remove dependency on unit from normal tests in makefile
Tommy Pettersson <[EMAIL PROTECTED]>**20060226181751] 
[bump version to 1.0.6rc2
Tommy Pettersson <[EMAIL PROTECTED]>**20060226164451] 
[TAG 1.0.6rc1
Tommy Pettersson <[EMAIL PROTECTED]>**20060219231919] 
[bump version to 1.0.6rc1
Tommy Pettersson <[EMAIL PROTECTED]>**20060219231900] 
[add some changelog entries
Tommy Pettersson <[EMAIL PROTECTED]>**20060219231847] 
[change suggestion in bestpractices on reverting addfile to use remove
Tommy Pettersson <[EMAIL PROTECTED]>**20051115101928] 
[resolve conflicts
Tommy Pettersson <[EMAIL PROTECTED]>**20060219213218] 
[Minor documentation editing.
Bill Trost <[EMAIL PROTECTED]>**20060108193245
 Change details:
  * Replace "repo" with "repository" where practical.
  * Replace "an email" with something less grating.  (-:
  * Try to consistify formatting, punctuation, & capitalization.
  * etc.
] 
[check for malicious path before applying patch (issue48)
Tommy Pettersson <[EMAIL PROTECTED]>**20060219192328] 
[new test for unpull
Tommy Pettersson <[EMAIL PROTECTED]>**20060212172344] 
[reimplement --set-script-executable after apply_list unoptimization
Tommy Pettersson <[EMAIL PROTECTED]>**20060123004900] 
[revert optimization for apply_list
Tommy Pettersson <[EMAIL PROTECTED]>**20060119231523
 The optimization made unrecord and unpull sometimes fail.
 It, unnecessarily, removes the --set-script-executable functionality.
] 
[Commute patches when getting a specific version of a repo
[EMAIL PROTECTED]
 Fix for issue 67
] 
[add test for get --tag with commuted patches (Issue67)
Tommy Pettersson <[EMAIL PROTECTED]>**20060211194736
 Supplied by Grant Husbands.
] 
[Add newline between long comment and changed files list in dry-run summary
[EMAIL PROTECTED] 
[remove TODO from three passing tests in pull.pl
Tommy Pettersson <[EMAIL PROTECTED]>**20060211183857] 
[new TODO test for better message on directory conflict when pulling
Mark Stosberg <[EMAIL PROTECTED]>**20051124003621] 
[test suite: fix some glitches in directory creation/removal
Tommy Pettersson <[EMAIL PROTECTED]>**20060130012803] 
[dateparser.sh only tries to delete tmp if it exists
Jason Dagit <[EMAIL PROTECTED]>**20060114021327] 
[All perl tests use cleanup at beginning instead of rm_rf
Jason Dagit <[EMAIL PROTECTED]>**20060114021114
 rm_rf will give an error (causing test to fail) when the directory is
 missing.  Use cleanup instead as it will not give an error.
] 
[Added author to darcs record commandline in dateparser.sh
Jason Dagit <[EMAIL PROTECTED]>**20060114021017] 
[Fixed minor typo in home page.
Marnix Klooster <[EMAIL PROTECTED]>**20060113054649] 
[use exact matching in some changelog entries
Tommy Pettersson <[EMAIL PROTECTED]>**20060129124023] 
[add some changelog entries
Tommy Pettersson <[EMAIL PROTECTED]>**20060129123955] 
[Detect dates which overflow.  Throw a more helpful error message.
Eric Kow <[EMAIL PROTECTED]>**20060211194521
 
 An example of a date which overflows is "105 years ago" on my system.
   
 For reference: The "problem" is not so much Haskell's System.Time, but
 in the underlying C library.  System.Time uses Integer to represent
 ClockTime, so theoretically this number can be as big as we want.
 However, the function addToClockTime makes a call to 'mktime' (time.h)
 to get a value for the number of seconds elapsed since 1970.  And this
 value is of a fixed-size type (time_h).  If the number of seconds
 overflows, mktime returns -1 to indicate an error.  This is detected by
 System.Time and propagated up as a user error "Time.toClockTime: invalid
 input".
 
] 
[Correct dateparser test's self-cleanup.
Eric Kow <[EMAIL PROTECTED]>**20060129210701
 
 The dateparser test was not properly removing its own tmp directory,
 causing it to be a pain when using the tests/tests_to_run mechanism.
 
] 
[Remove '4 score, 7 years ago' from dateparser test.
Eric Kow <[EMAIL PROTECTED]>**20060129210635] 
[Update dateparser test with CVS style dates.
Eric Kow <[EMAIL PROTECTED]>**20060120233434] 
[Add time zone support for CVS date parsing. (issue104)
Eric Kow <[EMAIL PROTECTED]>**20060120233327
 
] 
[refactor amInRepository, am_in_repository and findRepository
Eric Kow <[EMAIL PROTECTED]>**20060115111509
 
 replace helper functions with general seekRepo function 
 also refactor am_not_in_repository 
] 
[remove spurious '.' in doc
Eric Kow <[EMAIL PROTECTED]>**20060114230020] 
[call unnamed patches "changes" in interactive patch selection dialogue
Tommy Pettersson <[EMAIL PROTECTED]>**20060113203829
 It currently affects record, revert and amend, but will generally do
 "the right thing".
] 
[fix pathname in comment in darcs.cgi.in
[EMAIL PROTECTED] 
[fix win32 build breaks
Will <[EMAIL PROTECTED]>**20060112054853] 
[fix content-type in rss output of cgi
Will <[EMAIL PROTECTED]>**20060110052938] 
[resolve conflict
Tommy Pettersson <[EMAIL PROTECTED]>**20060108173148] 
[Obey normal autoconf conventions.
Dave Love <[EMAIL PROTECTED]>**20051117190231
 Allows you to `make install prefix=...', for instance, and doesn't change
 default for sysconfdir.
] 
[add link to darcs-unstable repo on darcs home page
Tommy Pettersson <[EMAIL PROTECTED]>**20060107212721] 
[Don't say "yes" in an infinite loop.
Bill Trost <[EMAIL PROTECTED]>**20060108162605
 I ended up with this test hanging forever because the while loop wasn't getting
 a SIGPIPE because of the way my editor environment (no controlling tty?) was
 set up. We have a pretty good idea of how many "y"s are needed anyhow.
] 
[fix crash caused by tests failing on amend-record
Zachary P. Landau <[EMAIL PROTECTED]>**20060108174722] 
[Make the "record --pipe" docs match the program behavior.
Bill Trost <[EMAIL PROTECTED]>**20060107050910] 
[Make --exact-version also work if darcs is built from "make dist" tar ball
Marnix Klooster <[EMAIL PROTECTED]>**20060106205857
 
 This is to prevent "darcs --exact-version" outputting something like
 
   darcs compiled on Mar  2 2005, at 10:56:16
   unknown
 
 as it does when building from the output of "make dist", e.g., from the
 official tarballs at darcs.net.  (This is what a lot of people and distros do.
 Gentoo does this, and I'm using Gentoo, and I want to be able to do "darcs
 --exact-version" and have it output something sensible.)
 
 The reason that this problem occurs is that while doing 'make predist' (in the
 'predist' preference), Context.hs was nicely preserved by predist_copy, but
 then thrown away by distclean which calls clean.  So the resulting tarball has
 no Context.hs, which results in the "unknown" exact version.
 
 The solution consists of the following:
 
  * Only remove Context.hs in "clean" if it can be rebuilt using its rule
    in automake.mk (i.e., if _darcs/inventory exists, so if we are in a
    repository).
 
  * Target realclean is renamed to the newer maintainer-clean and extended a
    little, according to the GNU make manual (not strictly necessary).
 
 As a result of this, we now follow GNU makefile conventions more closely.  See
 the rules in the "Standard Targets for Users" section of the GNU make manual
 (currently at http://www.gnu.org/software/make/manual/html_node/make_127.html),
 and an interpretation of these rules in the "What Gets Cleaned" section of the
 GNU automake manual (currently at
 http://www.gnu.org/software/automake/manual/html_node/Clean.html).
 
 Thanks to Taral <[EMAIL PROTECTED]> for the above info.
] 
[only create log file when a long comment was requested
Zachary P. Landau <[EMAIL PROTECTED]>**20060108181034] 
[Use temporary file when editing send description.
Zachary P. Landau <[EMAIL PROTECTED]>**20051217212051] 
[--repodir for changes (RT #196 and #567)
Eric Kow <[EMAIL PROTECTED]>**20060109001224
 
 Changes already accepts a --repo flag for possibly remote repo dirs, but there
 is no reason not to also accept --repodir.  The gain in consistency outweighs
 the cost in redundancy.
    
 Also, do not attempt to get_repodir unless --repo is in the arguments.  This
 is so that --repodir can work with relative paths.  (Otherwise, darcs tries to
 change directory twice, which is bad).  
 
] 
[More canonization
Eric Kow <[EMAIL PROTECTED]>**20060108235935
 
 canonized : Mark Stosberg, Erik Schnetter, Joeri van Ruth 
 identified: Richard Smith, Victor Hugo Borja Rodriguez
 
] 
[Improved single-character prompt (RT #261)
Eric Kow <[EMAIL PROTECTED]>**20060108225741
 
 In the dialogue prompting for a single character as a response, if the
 user just presses enter, we behave is if we got an invalid response.
 This way, the user gets a little bit of feedback that he should respond
 differently.
   
 Also: refactors the case where there is a default answer and where the
 user may press '?' for help.
 
] 
[Corrections to bugfix for (RT #466)
Eric Kow <[EMAIL PROTECTED]>**20060108225411
 
 The bug fix for case insensitive filesystems was incorrect because
  1. canonicalizePath does not canonicalise the same filename with
     different cases into the same entry
  2. RT #466 affects case sensitive and case insensitive file 
     systems alike (i.e. the bug description was wrong)
  3. canonicalizePath is not available in ghc 6.2.2
 
 This correction also has the advantage of being much simpler and closer
 to what David Roundy suggested on the bug tracker.  We remove the old
 file from the slurpy so that it doesn't get mistaken for the new file.  
 
] 
[use _darcs/pristine in regression tests
Eric Kow <[EMAIL PROTECTED]>**20060108222000] 
[Update "darcs init" documentation to match its behavior.
Bill Trost <[EMAIL PROTECTED]>**20060105040737] 
[add a --without-docs option to configure
[EMAIL PROTECTED] 
[fix for Issue14 remove darcs-createrepo
Jason Dagit <[EMAIL PROTECTED]>**20051224002230] 
[Support --interactive option in changes command (issue #59).
Zachary P. Landau <[EMAIL PROTECTED]>**20051221052049] 
[Fix type incompatibility between C code and Haskell foreign declaration.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060106154108] 
[Move patchSetToPatches to Repository.lhs
Zachary P. Landau <[EMAIL PROTECTED]>**20051219043719] 
[Use _darcs/pristine instead of _darcs/current.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051215180814
 All versions of Darcs since 1.0.2rc1 are able to handle either name.  This
 will break compatibility of new repositories with older versions.
] 
[Allow rename to different case (RT #466, case-insensitive file systems)
Eric Kow <[EMAIL PROTECTED]>**20060106000141
 
 Creates an exception in the check that the new name does not already exists;
 it's ok if both names reduce to the same canonical path
 
] 
[Coalesce setpref (issue70 and RT #349)
Eric Kow <[EMAIL PROTECTED]>**20051230230842] 
[Added test selection mechanism to makefile
Eric Kow <[EMAIL PROTECTED]>**20051230230008
 
 If the developer creates a file test/tests_to_run with the filenames
 of the tests to run, only those tests will be run.
 
] 
[Invert 'file exists already' error message in mv
Eric Kow <[EMAIL PROTECTED]>**20051230220431
 
 mv used the wrong error message for --case-ok and opposite 
 
] 
[--repodir argument for get (RT #196 - controversial?)
Eric Kow <[EMAIL PROTECTED]>**20051230133605
 
 get already accepts a --repo-name flag, but I see no reason to keep this
 distinction, especially if we accept that init should accept --repodir
 
 In this implementation, we also keep the old --repo-name around for backwards
 compatability (of dubious value here), but the internal representation is
 changed to that of repodir
 
] 
[--repodir argument for several commands (RT #196 and RT #559)
Eric Kow <[EMAIL PROTECTED]>**20051230021652
 
 Commands affected: dist, optimize, repair, replace, setpref, tag, trackdown
 
 Includes a small repodir test script.
     
 Note that wrt RT #196 
   * replace and setpref (marked "no need" in the bug report -- but I don't see why not)
   * changes (--repo)  untouched [ I'd suggest having both flags available ]
   * get (--repo-name) [ no reccomendations ]
 
] 
[bug fixes for darcs help
Eric Kow <[EMAIL PROTECTED]>**20051230011003] 
[Added --repodir argument to init (RT #104 and part of RT #196)
Eric Kow <[EMAIL PROTECTED]>**20051230005424
 
 This implementation also tries to create the repodir if it does not exist.
 
] 
[Canonize myself and almost all other contributers.
Eric Kow <[EMAIL PROTECTED]>**20051229140428
 Add function to append name to email address 
 
 Merged: Marnix Klooster, Eric Kow, Andres Loeh, Esa Ilari Vuokko 
 
 Looked up name on Google for most orphaned email addresses.
 Hope nobody actually objects to this.
 
] 
[Do not document "darcs query manifest" twice.
Erik Schnetter <[EMAIL PROTECTED]>**20051222125103] 
[Rename git.c to gitlib.c
Erik Schnetter <[EMAIL PROTECTED]>**20051222115318
 
 On case-insensitive file systems, the source files Git.lhs and git.c
 lead to the same object file git.o.  Renaming git.c to gitlib.c solves
 this problem.
] 
[Remove periods from the AC_MSG_CHECKING call for the release state.
Matt Kraai <[EMAIL PROTECTED]>**20051220174536] 
[Implementation of help command
Eric Kow <[EMAIL PROTECTED]>**20051218172558
 (RT #307)
 
 Provides a command to display usage information on the screen.
  darcs help           = darcs --help
  darcs help --verbose = darcs --extended-help
  darcs help command   = darcs command --help
 
 This implementation understands abbreviated commands and subcommands.
 Slightly refactors darcs.lhs.
 
] 
[Extended date matching functionality. 
Eric Kow <[EMAIL PROTECTED]>**20051228210942
 (issue31 and RT #34)
 
 Now accepts ISO 8601 intervals (mostly) as well as a larger subset of
 English (including times like "yesterday at noon").
 
 Note: also includes corrections to ISO 8601 date/time parsing, using
 a more elegant technique of building dates up. 
 
] 
[Partial implementation of iso 8601 dates
Eric Kow <[EMAIL PROTECTED]>**20051228123040
 (issue31) - first step 
 
 reluctant to implement (ambiguous!): 
   * years > 9999  
   * truncated representations with implied century (89 for 1989) 
 unimplemented: 
   * time intervals -- this might be good to have in darcs
   * negative dates (BC)                    
 
] 
[only print 'making executable' in verbose mode
Eric Kow <[EMAIL PROTECTED]>**20051226182817] 
[reorganize comments (and add a comment) in Depends.lhs.
David Roundy <[EMAIL PROTECTED]>**20051218122029] 
[fix bug in doesDirectoryReallyExist.
David Roundy <[EMAIL PROTECTED]>**20051020121710
 We were failing with an exception if there was no such object.  The error
 message was:
 
 Fail: getSymbolicLinkStatus: does not exist
] 
[fix type of foreign calls in FastPackedString.
David Roundy <[EMAIL PROTECTED]>**20050920125800] 
[rename RepoTypes to PatchSet.
David Roundy <[EMAIL PROTECTED]>**20050917133920] 
[remove PatchSequence, which has long been obsolete.
David Roundy <[EMAIL PROTECTED]>**20050917133313
 The patch removes remaining vestiges of PatchSequence, which was obsoleted
 long ago by PatchSet (which stores patches in the opposite order (better
 for lazy use) and which has additional information about tags that allows
 us to avoid looking at old history.
] 
[RemoteApply no longer depends on cd, use --repodir instead.
[EMAIL PROTECTED]
 
 This is a minor change to make darcs no longer use cd
 before applying patches to a remote repository. 
 Now the --repodir option for the apply command is used.
 
 This patch came from a hack to rssh[http://sf.net/projects/rssh]
 to allow using darcs as a restricted command without depending
 on the cd binary.
 http://sf.net/tracker/index.php?func=detail&aid=1351939&group_id=65349&atid=510643
] 
[Support signed push
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129082159] 
[Fix typo in multirepo pull.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051217201918] 
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051217201903] 
[add changelog entry for multirepo pull.
David Roundy <[EMAIL PROTECTED]>**20051215122808] 
[add support for pulling from multiple repositories simultaneously.
David Roundy <[EMAIL PROTECTED]>**20050919125012] 
[Use POSIX-style option for 'head', instead of obsolescent syntax
Marnix Klooster <[EMAIL PROTECTED]>**20051216111731] 
[Clarify wording for changes that can't be unreverted
[EMAIL PROTECTED] 
[Set attachment filename when sending a patch bundle by e-mail.
Zachary P. Landau <[EMAIL PROTECTED]>**20051217195009] 
[save long comment file if a test fails during record
Zachary P. Landau <[EMAIL PROTECTED]>**20051216023948] 
[correction for send.sh test
Eric Kow <[EMAIL PROTECTED]>**20051218095652
 previously failed on (at least) MacOS X 10.3.9
 
] 
[properly quote paths so that paths with spaces in them are okay
[EMAIL PROTECTED] 
[fix up debug printouts in cygwin-wrapper.bash
[EMAIL PROTECTED] 
[smoother invocation of cygwin-wrapper.bash -- it detects fully-qualified path to itself by leading /
[EMAIL PROTECTED] 
[modernize amend-record.pl to be more portable.
Mark Stosberg <[EMAIL PROTECTED]>**20050402133417
 
 This depends on the new "echo_to_darcs()" function in Test::Darcs
] 
[implementation of --set-scripts-executable on local darcs get
[EMAIL PROTECTED]
 proposed fix for issue38
 
 The --set-scripts-executable flag is normally evaluated when you apply
 patches.  But when you do a local darcs get, no patches are applied.
 So as a solution, we traverse the directory on local darcs get , and set
 any script files to be executable. 
 
 Note: one flaw in this patch is that it duplicates the definition of
 what a script is -- a file that starts with #! -- in PatchApply.lhs and
 Get.lhs.  It might be good to refactor these somehow.
 
] 
[extended set-scripts-executable test
[EMAIL PROTECTED]
 added check for local darcs get (issue 38) as well as initial sanity check
  
] 
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051214223217] 
[Add --subject flag to 'darcs send'
Joeri van Ruth <[EMAIL PROTECTED]>**20051205120301] 
[print out the patch name when a test fails.
Zachary P. Landau <[EMAIL PROTECTED]>**20051205055109] 
[revert maybe_relink and atomic_create to original C code.
David Roundy <[EMAIL PROTECTED]>**20051208131213] 
[resolve conflicts between stable and unstable.
David Roundy <[EMAIL PROTECTED]>**20051206134818] 
[Merge changes
Ian Lynagh <[EMAIL PROTECTED]>**20051008225210] 
[fix mkstemp implementation for win32
Peter Strand <[EMAIL PROTECTED]>**20050810211303] 
[Implement parts of System.Posix.(IO|Files) for win32
[EMAIL PROTECTED] 
[implement RawMode with library functions instead of ffi
[EMAIL PROTECTED] 
[call hsc2hs without output filename argument
[EMAIL PROTECTED] 
[Rename compat.c to c_compat.c to avoid object filename conflict with Compat.hs
[EMAIL PROTECTED] 
[Move atomic_create/sloppy_atomic_create to Compat
Ian Lynagh <[EMAIL PROTECTED]>**20050730141703] 
[Split the raw mode stuff out into its own .hsc file. Windows needs some TLC
Ian Lynagh <[EMAIL PROTECTED]>**20050730134030] 
[Move maybe_relink out of compat.c
Ian Lynagh <[EMAIL PROTECTED]>**20050730131205] 
[Remove is_symlink
Ian Lynagh <[EMAIL PROTECTED]>**20050730122255] 
[Move mkstemp to Compat.hs
Ian Lynagh <[EMAIL PROTECTED]>**20050730020918] 
[Start Compat.hs, and move stdout_is_a_pipe from compat.c
Ian Lynagh <[EMAIL PROTECTED]>**20050730004829] 
[Fix mistyped /dev/null, fixes --sendmail-command in Windows
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129160120] 
[Use \ as path separator for GnuPG in Windows -- makes apply --verify work
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129164533] 
[make dangers and recommended use of "Amend" clearer in the docs.
Mark Stosberg <[EMAIL PROTECTED]>**20051213140523
 
 I think it's important to be clearer about when it's appropriate to use 'amend',
 so I moved some notes into the short and mid-length help texts.
] 
[update web page to reflect 1.0.5 as latest stable source.
Tommy Pettersson <[EMAIL PROTECTED]>**20051213111137] 
[fix handling of absolute paths containing drive letters
Will <[EMAIL PROTECTED]>**20051208054737
 This fixes issue 47 where paths containing drive letters (i.e. on windows)
 are not treated as absolute paths.
] 
[bump version to 1.0.6pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20051208092839] 
[TAG 1.0.5
Tommy Pettersson <[EMAIL PROTECTED]>**20051207112730] 
Patch bundle hash:
91f5fccbac787fc55fa1a2e883346ba51abd45ba
_______________________________________________
darcs-devel mailing list
darcs-devel@darcs.net
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel

Reply via email to