Juliusz and other developers,
Here is a slightly improved version of the absolute directories patch.
I send it with my --repodir patches, because there was a conflict
between one of them and the previous version of my patch, which I went
ahead and fixed, thus creating a dependency.
I believe it is correct, but it would be nice if at least one third
party could review the patch first.
Sat Mar 4 03:41:50 CET 2006 Eric Kow <[EMAIL PROTECTED]>
* Improved support for absolute paths (issue 32).
This patch corrects the problem where arguments in the repository were
not being recognised as such if they were provided as absolute paths.
My solution was to convert absolute paths into relative ones -- not all
of them, just the ones which are prefixed by the current repository and
a slash. We do this by stripping off the first N characters. The first
question is does the general scheme sound correct?
The second question is where could things go wrong? Here's what I
thought of, and my answers to them:
- Not using the right absolute path for the current repository
possible - most commands (except for changes) uses the
current working directory first thing within withRepoLock.
If I understand correctly, in withRepoLock, the cwd is the
repository...
- Converting things other than absolute paths:
ok - should never happen; we use is_absolute to make sure
- Using the conversion function on something other than
command line arguments
doubtful - grepping the code doesn't reveal anything
- The path refers to a location on some other server:
doubtful - these would always be prefixed by something like
server:/path, right?
- Sometimes we really want an absolute path and not its relative
equivalent
unsure - what for?
Here is a small catalog of commands that were modified:
Convert absolute paths if prefixed by repodir:
add, amend-record, annotate, changes, diff,
mv, record, remove, replace, revert, whatsnew
No actual changes, despite code modifications:
apply, push, pull, put.
Also, the patch no longer attempts to canonicalise absolute paths, which
means that it might not work for all paths, but should be good enough
for most of them.
What do the rest of you think? Is this ok?
Anyway, there is perhaps a simpler, less invasive solution to the
problem. I'd certainly welcome somebody finding that instead :-)
Cheers,
Eric
================================================================
Fri Dec 30 01:54:24 CET 2005 Eric Kow <[EMAIL PROTECTED]>
* Added --repodir argument to init (RT #104 and part of RT #196)
This implementation also tries to create the repodir if it does not exist.
Fri Dec 30 03:16:52 CET 2005 Eric Kow <[EMAIL PROTECTED]>
* --repodir argument for several commands (RT #196 and RT #559)
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 ]
Fri Dec 30 14:36:05 CET 2005 Eric Kow <[EMAIL PROTECTED]>
* --repodir argument for get (RT #196 - controversial?)
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
Mon Jan 9 01:12:24 CET 2006 Eric Kow <[EMAIL PROTECTED]>
* --repodir for changes (RT #196 and #567)
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).
Sat Mar 4 03:41:50 CET 2006 Eric Kow <[EMAIL PROTECTED]>
* Improved support for absolute paths (issue 32).
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
Sat Mar 4 11:43:55 CET 2006 Eric Kow <[EMAIL PROTECTED]>
* Enable tests for absolute paths.
New patches:
[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.
] {
hunk ./DarcsRepo.lhs 124
-am_not_in_repo _ = do air <- doesFileExist "_darcs/inventory" `mand`
+am_not_in_repo f = do go_to_workdir True f
+ air <- doesFileExist "_darcs/inventory" `mand`
hunk ./DarcsRepo.lhs 132
-am_in_repo (WorkDir d:_) = do setCurrentDirectory d `catchall`
- (fail $ "can't set directory to "++d)
- am_in_repo []
-am_in_repo (_:fs) = am_in_repo fs
-am_in_repo [] = a_i_r ""
+am_in_repo fs = do go_to_workdir False fs
+ a_i_r ""
hunk ./DarcsRepo.lhs 156
+
+go_to_workdir :: Bool -> [DarcsFlag] -> IO ()
+go_to_workdir create (WorkDir d:_) =
+ do when create $ createDirectoryIfMissing False d
+ -- note that the above could always fail
+ setCurrentDirectory d
+ `catchall` (fail $ "can't set directory to "++d)
+go_to_workdir c (_:fs) = go_to_workdir c fs
+go_to_workdir _ [] = return ()
hunk ./Init.lhs 23
-import DarcsArguments ( DarcsFlag, pristine_tree )
+import DarcsArguments ( DarcsFlag, pristine_tree, working_repo_dir )
hunk ./Init.lhs 64
- command_darcsoptions = [pristine_tree]}
+ command_darcsoptions = [pristine_tree,
+ working_repo_dir]}
addfile ./tests/init.pl
hunk ./tests/init.pl 1
+#!/usr/bin/env perl
+
+# Some tests for the repodir flag
+
+use lib qw(lib/perl);
+
+use Test::More qw/no_plan/;
+
+use Test::Darcs;
+use Shell::Command;
+
+use strict;
+
+my $test_name = 'Make sure that a simple init works.';
+cleanup 'temp1';
+mkpath 'temp1';
+chdir 'temp1';
+darcs 'init';
+ok((-d '_darcs'), '_darcs directory was created');
+
+$test_name = 'Make sure that init in a pre-existing darcs directory fails.';
+like(darcs('init'), qr/not run this command in a repository/, $test_name);
+
+$test_name = 'Make sure that init --repodir creates the directory if it does not exist';
+chdir '../';
+cleanup 'temp1';
+darcs 'init --repodir=temp1';
+ok((-d 'temp1/_darcs'), '_darcs directory was created');
+
+# cleanup
+chdir '../';
+cleanup 'temp1';
+ok((!-d 'temp1'), 'temp1 directory was deleted');
}
[--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 ]
] {
hunk ./Dist.lhs 26
-import Repository ( amInRepository )
+import Repository ( amInRepository, withRepoLock )
hunk ./Dist.lhs 76
- command_darcsoptions = [distname_option, verbose]}
+ command_darcsoptions = [distname_option, verbose, working_repo_dir]}
hunk ./Dist.lhs 81
-dist_cmd opts _ = do
+dist_cmd opts _ = withRepoLock $ \_ -> do
hunk ./Optimize.lhs 34
+ working_repo_dir,
hunk ./Optimize.lhs 86
+ working_repo_dir,
hunk ./Repair.lhs 27
- any_verbosity,
+ any_verbosity, working_repo_dir,
hunk ./Repair.lhs 65
- command_darcsoptions = [any_verbosity]}
+ command_darcsoptions = [any_verbosity, working_repo_dir]}
hunk ./Replace.lhs 119
- command_darcsoptions = [tokens, force_replace, verbose]}
+ command_darcsoptions = [tokens, force_replace, verbose, working_repo_dir]}
hunk ./SetPref.lhs 24
-import DarcsArguments ( DarcsFlag, )
-import Repository ( identifyRepository, amInRepository, add_to_pending )
+import DarcsArguments ( DarcsFlag, working_repo_dir )
+import Repository ( amInRepository, add_to_pending, withRepoLock )
hunk ./SetPref.lhs 92
- command_darcsoptions = []}
+ command_darcsoptions = [working_repo_dir]}
hunk ./SetPref.lhs 97
-setpref_cmd _ [pref,val] = do
- repository <- identifyRepository "."
+setpref_cmd _ [pref,val] = withRepoLock $ \repository -> do
hunk ./Tag.lhs 65
- pipe_interactive, verbose]}
+ pipe_interactive, verbose,
+ working_repo_dir]}
hunk ./TrackDown.lhs 24
-import DarcsArguments ( DarcsFlag, verbose )
+import DarcsArguments ( DarcsFlag, verbose, working_repo_dir )
hunk ./TrackDown.lhs 26
-import Repository ( identifyRepository, amInRepository, read_repo )
+import Repository ( amInRepository, read_repo, withRepoLock )
hunk ./TrackDown.lhs 66
- command_darcsoptions = [verbose]}
+ command_darcsoptions = [verbose, working_repo_dir]}
hunk ./TrackDown.lhs 71
-trackdown_cmd opts args = do
- repository <- identifyRepository "."
+trackdown_cmd opts args = withRepoLock $ \repository -> do
addfile ./tests/repodir.pl
hunk ./tests/repodir.pl 1
+#!/usr/bin/env perl
+
+# Some tests for the repodir flag
+
+use lib qw(lib/perl);
+
+use Test::More qw/no_plan/;
+
+use Test::Darcs;
+use Shell::Command;
+
+use strict;
+
+cleanup 'temp1';
+mkpath 'temp1';
+
+my $repo_flag = '--repodir=temp1';
+my $test_name = 'Make sure that init works with --repodir';
+darcs "init $repo_flag";
+ok((-d 'temp1/_darcs'), '_darcs directory was created');
+
+# add some meat to that repository
+chdir 'temp1';
+touch 'baz';
+darcs qw( add baz ) ;
+darcs qw( record -A me -m moo -a ) ;
+chdir '../';
+
+$test_name = 'dist accepts --repodir.';
+like( darcs("dist $repo_flag"), qr/Created dist/i, $test_name );
+
+$test_name = 'optimize accepts --repodir.';
+like( darcs("optimize --reorder-patches $repo_flag"), qr/done optimizing/i, $test_name );
+
+$test_name = 'repair accepts --repodir.';
+like( darcs("repair $repo_flag"), qr/already consistent/i, $test_name );
+
+$test_name = 'replace accepts --repodir.';
+like( darcs("replace $repo_flag foo bar"), qr//i, $test_name );
+
+$test_name = 'setpref accepts --repodir.';
+like( darcs("setpref $repo_flag test echo"), qr/Changing value of test/i, $test_name );
+
+$test_name = 'trackdown accepts --repodir.';
+like( darcs("trackdown $repo_flag"), qr/Success!/i, $test_name );
+
+# cleanup
+chdir '../';
+cleanup 'temp1';
+ok((!-d 'temp1'), 'temp1 directory was deleted');
}
[--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
] {
hunk ./DarcsArguments.lhs 101
-get_content (RepoName s) = Just s
hunk ./DarcsArguments.lhs 105
+get_content (WorkDir s) = Just s
hunk ./DarcsArguments.lhs 674
-reponame = DarcsArgOption [] ["repo-name"] RepoName "DIRECTORY"
+reponame = DarcsArgOption [] ["repo-name"] WorkDir "DIRECTORY"
hunk ./DarcsFlags.lhs 44
- | RepoName String
hunk ./Get.lhs 27
-import DarcsArguments ( DarcsFlag( RepoName, Partial,
+import DarcsArguments ( DarcsFlag( WorkDir, Partial,
hunk ./Get.lhs 32
- pristine_tree )
+ pristine_tree, working_repo_dir )
hunk ./Get.lhs 102
- pristine_tree]}
+ pristine_tree,
+ working_repo_dir]}
hunk ./Get.lhs 107
-get_cmd opts [inrepodir, outname] = get_cmd (RepoName outname:opts) [inrepodir]
+get_cmd opts [inrepodir, outname] = get_cmd (WorkDir outname:opts) [inrepodir]
hunk ./Get.lhs 198
-make_repo_name (RepoName n:_) _ =
+make_repo_name (WorkDir n:_) _ =
hunk ./tests/repodir.pl 15
+cleanup 'temp2';
hunk ./tests/repodir.pl 30
+$test_name = 'get accepts --repodir.';
+like( darcs("get --repodir=temp2 temp1"), qr/Finished getting/i, $test_name );
+ok((-d 'temp2/_darcs'), '_darcs directory was created');
+cleanup 'temp2';
+$test_name = 'get accepts absolute --repodir.';
+like( darcs("get --repodir=`pwd`/temp2 temp1"), qr/Finished getting/i, $test_name );
+ok((-d 'temp2/_darcs'), '_darcs directory was created');
+
hunk ./tests/repodir.pl 60
+cleanup 'temp2';
+ok((!-d 'temp2'), 'temp1 directory was deleted');
}
[--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).
] {
hunk ./Changes.lhs 26
+ RepoDir,
hunk ./Changes.lhs 30
+ working_repo_dir,
hunk ./Changes.lhs 84
+ working_repo_dir,
hunk ./Changes.lhs 96
- let files = sort $ map (fix_filepath opts) args
+ let files = sort $ map (fix_filepath opts) args
+ -- Why '.'? Because if it was WorkDir (--repodir); then the
+ -- findRepository prereq would already have cd'd its way up
+ repodir = if hasRepoDir opts then get_repodir opts else "."
hunk ./Changes.lhs 101
- repository <- identifyRepository (get_repodir opts)
+ repository <- identifyRepository repodir
hunk ./Changes.lhs 117
+
+hasRepoDir :: [DarcsFlag] -> Bool
+hasRepoDir [] = False
+hasRepoDir (RepoDir _:_) = True
+hasRepoDir (_:fs) = hasRepoDir fs
hunk ./tests/repodir.pl 38
+$test_name = 'changes accepts --repodir.';
+like( darcs("changes $repo_flag"), qr/moo/i, $test_name );
+$test_name = 'changes accepts absolute --repo.';
+like( darcs("changes --repo=`pwd`/temp1"), qr/moo/i, $test_name );
+TODO: {
+ local $TODO = 'waiting on coding';
+ $test_name = 'changes accepts relative --repo.';
+ like( darcs("changes --repo=temp1"), qr/moo/i, $test_name );
+}
+
}
[Improved support for absolute paths (issue 32).
Eric Kow <[EMAIL PROTECTED]>**20060304024150
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
] {
hunk ./Add.lhs 26
- list_files, fix_filepath, list_unregistered_files,
+ list_files, fix_filepaths_wrt, list_unregistered_files,
hunk ./Add.lhs 102
- let origfiles = map (fix_filepath opts) args
+ origfiles <- fix_filepaths_wrt "." opts args
hunk ./AmendRecord.lhs 21
-import Monad ( when, )
+import Monad ( when, liftM )
hunk ./AmendRecord.lhs 47
- fix_filepath, working_repo_dir, match_one_nontag,
+ fix_filepaths_wrt, working_repo_dir,
+ match_one_nontag,
hunk ./AmendRecord.lhs 107
- let files = sort $ map (fix_filepath opts) args in
hunk ./AmendRecord.lhs 108
+ files <- sort `liftM` fix_filepaths_wrt "." opts args
hunk ./Annotate.lhs 29
- fix_filepath,
+ fix_filepaths_wrt,
hunk ./Annotate.lhs 150
-annotate_cmd opts [rel_file_or_directory] = do
+annotate_cmd opts [EMAIL PROTECTED] = do
hunk ./Annotate.lhs 152
+ (rel_file_or_directory:_) <- fix_filepaths_wrt "." opts args
+ let file_or_directory = fn2fp $ norm_path $ fp2fn rel_file_or_directory
hunk ./Annotate.lhs 181
- where file_or_directory = fn2fp $ norm_path $ fp2fn $
- fix_filepath opts rel_file_or_directory
hunk ./Apply.lhs 119
-apply_cmd opts [patchesfile] = withRepoLock $ \repository ->
- with_patches_file (fix_filepath opts patchesfile) $ \ps -> do
+apply_cmd opts [patchesfile] = withRepoLock $ \repository -> do
+ with_patches_file (fix_filepath "" opts patchesfile) $ \ps -> do
hunk ./Changes.lhs 21
-import Control.Monad ( when )
+import Control.Monad ( liftM, when )
hunk ./Changes.lhs 28
- fix_filepath, changes_format,
+ fix_filepaths_wrt, changes_format,
hunk ./Changes.lhs 96
- let files = sort $ map (fix_filepath opts) args
- -- Why '.'? Because if it was WorkDir (--repodir); then the
- -- findRepository prereq would already have cd'd its way up
- repodir = if hasRepoDir opts then get_repodir opts else "."
- filtered_changes p = maybe_reverse $ get_changes_info opts files p in do
- repository <- identifyRepository repodir
+ -- Why '.'? Because if it was WorkDir (--repodir); then the
+ -- findRepository prereq would already have cd'd its way up
+ let repodir = if hasRepoDir opts then get_repodir opts else "." in do
+ files <- sort `liftM` fix_filepaths_wrt repodir opts args
+ let filtered_changes p = maybe_reverse $ get_changes_info opts files p
+ repository <- identifyRepository repodir
hunk ./Changes.lhs 103
- `catchall` (fail $ formatPath (get_repodir opts) ++
+ `catchall` (fail $ formatPath repodir ++
hunk ./DarcsArguments.lhs 18
+ fix_filepaths, fix_filepaths_wrt,
hunk ./DarcsArguments.lhs 65
-import Directory hiding ( getCurrentDirectory )
+import System.Directory ( doesDirectoryExist )
hunk ./DarcsArguments.lhs 78
-import FilePathUtils ( fix_maybe_absolute, drop_paths )
+import DarcsURL ( is_relative )
+import FilePathUtils ( fix_maybe_absolute, drop_paths, (///) )
hunk ./DarcsArguments.lhs 86
+import Workaround ( getCurrentDirectory )
hunk ./DarcsArguments.lhs 131
+extract_fix_path :: [DarcsFlag] -> Maybe FilePath
+extract_fix_path [] = Nothing
+extract_fix_path ((FixFilePath fix):_) = Just fix
+extract_fix_path (_:fs) = extract_fix_path fs
+
+fix_filepaths_wrt :: FilePath -> [DarcsFlag] -> [FilePath] -> IO [FilePath]
+fix_filepaths_wrt repodir opts args = do
+ here <- getCurrentDirectory
+ let absRepo | null repodir = ""
+ | repodir == "." = here
+ | is_relative repodir = here /// repodir
+ | otherwise = repodir
+ return $ fix_filepaths absRepo opts args
+
+fix_filepaths :: FilePath -> [DarcsFlag] -> [FilePath] -> [FilePath]
+fix_filepaths repo opts args =
+ case extract_fix_path opts of
+ Nothing -> args
+ Just fix -> map (fix_maybe_absolute repo fix) args
+
hunk ./DarcsArguments.lhs 152
-fix_flag fix (Output s) = Output $ fix_maybe_absolute fix s
-fix_flag fix (Verify s) = Verify $ fix_maybe_absolute fix s
-fix_flag fix (LogFile s) = LogFile $ fix_maybe_absolute fix s
-fix_flag fix (VerifySSL s) = VerifySSL $ fix_maybe_absolute fix s
+fix_flag fix (Output s) = Output $ fix_maybe_absolute "" fix s
+fix_flag fix (Verify s) = Verify $ fix_maybe_absolute "" fix s
+fix_flag fix (LogFile s) = LogFile $ fix_maybe_absolute "" fix s
+fix_flag fix (VerifySSL s) = VerifySSL $ fix_maybe_absolute "" fix s
hunk ./DarcsArguments.lhs 157
-fix_flag fix (Context s) = Context $ fix_maybe_absolute fix s
+fix_flag fix (Context s) = Context $ fix_maybe_absolute "" fix s
hunk ./DarcsArguments.lhs 160
-fix_filepath :: [DarcsFlag] -> FilePath -> FilePath
-fix_filepath [] f = f
-fix_filepath (FixFilePath fix:_) f = fix_maybe_absolute fix f
-fix_filepath (_:fs) f = fix_filepath fs f
+fix_filepath :: FilePath -> [DarcsFlag] -> FilePath -> FilePath
+fix_filepath repo fs f =
+ case extract_fix_path fs of
+ Nothing -> f
+ Just fix -> fix_maybe_absolute repo fix f
hunk ./DarcsArguments.lhs 167
-unfix_filepaths [] f = f
-unfix_filepaths (FixFilePath fix:_) f = drop_paths fix f
-unfix_filepaths (_:fs) f = unfix_filepaths fs f
+unfix_filepaths flags f =
+ case extract_fix_path flags of
+ Nothing -> f
+ Just fix -> drop_paths fix f
hunk ./DarcsURL.hs 20
- is_file, is_url, is_ssh, is_relative,
+ is_file, is_url, is_ssh, is_relative, is_absolute,
hunk ./DarcsURL.hs 59
+is_absolute :: String -> Bool
hunk ./DarcsURL.hs 69
+is_absolute f = is_file f && (not $ is_relative f)
+
hunk ./DiffCommand.lhs 151
- path_list = if null args then [""] else map (fix_filepath opts) args
+ path_list = if null args then [""] else map (fix_filepath "" opts) args
hunk ./FilePathUtils.hs 20
+import List ( isPrefixOf )
hunk ./FilePathUtils.hs 25
-import DarcsURL ( is_relative, is_file )
+import DarcsURL ( is_absolute, is_relative, is_file )
hunk ./FilePathUtils.hs 28
-fix_maybe_absolute :: FilePath -> FilePath -> FilePath
-fix_maybe_absolute _ pat | not $ is_file pat = pat
-fix_maybe_absolute fix pat = fma $ map cleanup pat
- where fma p@('/':_) = p
- fma p@(_:':':_) = p
- fma p = fix /// p
- cleanup '\\' | path_separator == '\\' = '/'
- cleanup c = c
+fix_maybe_absolute :: FilePath -> FilePath -> FilePath -> FilePath
+fix_maybe_absolute _ _ pat | not $ is_file pat = pat
+fix_maybe_absolute repo fix pat = fma $ map cleanup pat
+ where fma p | is_relative p = fix /// p
+ | is_absolute p = unabsolute p
+ | otherwise = p
+ unabsolute p
+ | null repo = p -- it's ok not to specify a repository
+ | not_absolute repo = bug $ "Repository was not an absolute path: " ++ repo
+ | is_in_repo p = "." ++ (drop (length repo) p)
+ | otherwise = p
+ -- Note that (repo `isPrefixOf` p) without the slash is not a good idea.
+ -- The slash is important: what if your repo is "foo" and p is "foobar"?
+ is_in_repo p = (repo == p || (repo ++ "/") `isPrefixOf` p)
+ not_absolute = not.is_absolute -- is relative or url
hunk ./FilePathUtils.hs 47
- where fma p@('/':_) = p
- fma p@(_:':':_) = p
+ where fma p | is_absolute p = p
hunk ./FilePathUtils.hs 49
- cleanup '\\' | path_separator == '\\' = '/'
- cleanup c = c
+
+cleanup :: Char -> Char
+cleanup '\\' | path_separator == '\\' = '/'
+cleanup c = c
hunk ./FilePathUtils.hs 56
-make_dotdots p@('/':_) = bug $ "Can't make_dotdots on an absolute path: "
- ++ p
+make_dotdots p | is_absolute p = bug $ "Can't make_dotdots on an absolute path: "
hunk ./Mv.lhs 24
- fix_filepath, working_repo_dir,
+ fix_filepaths_wrt, working_repo_dir,
hunk ./Mv.lhs 89
-mv_cmd opts [relold,relnew] = let old = fix_filepath opts relold
- new = fix_filepath opts relnew in
- withRepoLock $ \repository -> do
+mv_cmd opts [EMAIL PROTECTED],_] = withRepoLock $ \repository -> do
+ (old:new:_) <- fix_filepaths_wrt "." opts args
hunk ./Mv.lhs 103
-mv_cmd opts relpaths =
- let moved = map (fix_filepath opts) $ init relpaths
- finaldir = fix_filepath opts $ last relpaths
- in
- withRepoLock $ \_ -> move_to_dir opts moved finaldir
+mv_cmd opts args =
+ withRepoLock $ \_ -> do
+ relpaths <- fix_filepaths_wrt "." opts args
+ let moved = init relpaths
+ finaldir = last relpaths
+ move_to_dir opts moved finaldir
hunk ./Pull.lhs 31
- match_several, fix_filepath,
+ match_several, fix_filepaths,
hunk ./Pull.lhs 60
-import DarcsURL ( is_relative )
hunk ./Pull.lhs 113
- fixrepodir r = if is_relative r then fix_filepath opts r
- else r
- repodirs = map fixrepodir unfixedrepodirs
hunk ./Pull.lhs 115
+ let repodirs = fix_filepaths "" opts unfixedrepodirs
hunk ./Push.lhs 85
- then fix_filepath opts unfixedrepodir
+ then fix_filepath "" opts unfixedrepodir
hunk ./Put.lhs 67
- then fix_filepath opts unfixedrepodir
+ then fix_filepath "" opts unfixedrepodir
hunk ./Record.lhs 20
-import Control.Monad ( filterM )
+import Control.Monad ( filterM, liftM )
hunk ./Record.lhs 42
- applyToPristine, patchTokenToPatchFile,
+ applyToPristine, patchTokenToPatchFile
hunk ./Record.lhs 119
- existing_files <- filterM (file_exists rec) $ sort $
- map (fix_filepath opts) args
- non_existent_files <- filterM (liftM not . file_exists rec) $ sort $
- map (fix_filepath opts) args
+ files <- sort `liftM` fix_filepaths_wrt "." opts args
+ existing_files <- filterM (file_exists rec) files
+ non_existent_files <- filterM (liftM not . file_exists rec) files
hunk ./Remove.lhs 23
-import DarcsArguments ( DarcsFlag, fix_filepath, verbose,
+import DarcsArguments ( DarcsFlag, fix_filepaths_wrt, verbose,
hunk ./Remove.lhs 74
-remove_cmd opts relargs = let args = map (fix_filepath opts) relargs in
+remove_cmd opts relargs =
hunk ./Remove.lhs 76
+ args <- fix_filepaths_wrt "." opts relargs
hunk ./Replace.lhs 125
+ fs <- fix_filepaths_wrt "." opts relfs
hunk ./Replace.lhs 139
- where fs = map (fix_filepath opts) relfs
- ftf _ = TextFile
+ where ftf _ = TextFile
hunk ./Revert.lhs 20
-import Monad ( when )
+import Monad ( when, liftM )
hunk ./Revert.lhs 28
- fix_filepath,
+ fix_filepaths_wrt,
hunk ./Revert.lhs 84
- let files = sort $ map (fix_filepath opts) args
+ files <- sort `liftM` fix_filepaths_wrt "." opts args
hunk ./WhatsNew.lhs 22
-import Monad ( when, unless )
+import Monad ( liftM, when, unless )
hunk ./WhatsNew.lhs 31
- fix_filepath,
+ fix_filepaths_wrt,
hunk ./WhatsNew.lhs 97
-whatsnew_cmd opts args | LookForAdds `elem` opts && NoSummary `notElem` opts =
- let files = sort $ map (fix_filepath opts) args in do
+whatsnew_cmd opts args | LookForAdds `elem` opts && NoSummary `notElem` opts = do
+ repository <- identifyRepository "."
+ files <- fix_filepaths_wrt "." opts args
hunk ./WhatsNew.lhs 102
- repository <- identifyRepository "."
hunk ./WhatsNew.lhs 131
-whatsnew_cmd opts args =
- let files = sort $ map (fix_filepath opts) args in do
+whatsnew_cmd opts args = do
+ files <- sort `liftM` fix_filepaths_wrt "." opts args
}
[Enable tests for absolute paths.
Eric Kow <[EMAIL PROTECTED]>**20060304104355] {
hunk ./tests/mv.pl 117
-TODO: {
- local $TODO = 'waiting on code for mv to work with absolute paths.';
-
- touch 'abs_path.t';
- darcs qw/add abs_path.t/;
-
- {
- my $mv_out = darcs 'mv ', cwd(),qw!/abs_path.t abs_path_new.t!;
- unlike($mv_out, qr/darcs failed/, 'mv should work with absolute path as a src argument.');
- }
- {
- my $mv_out = darcs 'mv ', qw!/abs_path.t !, cwd(), qw!/abs_path_new.t!;
- unlike($mv_out, qr/darcs failed/, 'mv should work with absolute path as a target argument.');
- }
+touch 'abs_path.t';
+darcs qw/add abs_path.t/;
hunk ./tests/mv.pl 120
+{
+ my $repo_abs = `pwd`;
+ my $mv_out = darcs(qw( mv $repo_abs/abs_path.t abs_path_new.t ));
+ unlike($mv_out, qr/darcs failed/, 'mv should work with absolute path as a src argument.');
hunk ./tests/mv.pl 126
-###
+{
+ my $repo_abs = `pwd`;
+ my $mv_out = darcs(qw( mv abs_path.t $repo_abs/abs_path_new.t));
+ unlike($mv_out, qr/darcs failed/, 'mv should work with absolute path as a target argument.');
+}
hunk ./tests/record.pl 39
-TODO: {
- local $TODO = "waiting on code for record to work with absolute paths";
+{
hunk ./tests/record.pl 45
- like( darcs(qw!record -A x -a -m foo!, cwd()."/date.t"), qr/finished recording/i, $test_name);
+ like( darcs(qw!record -A x -a -m foo!, `pwd`."/date.t"), qr/Finished recording/i, $test_name);
hunk ./tests/whatsnew.pl 52
-TODO: {
- local $TODO = "waiting on code for whatsnews to work with absolute paths";
+{
hunk ./tests/whatsnew.pl 54
+ my $abs_repo_path = `pwd`;
+ open(FOO,'>date.t');
+ print FOO "date.t";
+ close(FOO);
hunk ./tests/whatsnew.pl 59
- darcs(qw/add date.t/);
- like( darcs('whatsnew', "$ENV{PWD}/date.t"), qr/hunk/i, $test_name);
+ darcs(qw/add date.t/);
+ like( darcs('whatsnew', $abs_repo_path."date.t"), qr/hunk/i, $test_name);
}
Context:
[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
]
[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]
[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
]
[bug fixes for darcs help
Eric Kow <[EMAIL PROTECTED]>**20051230011003]
[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:
c9be107fd9fd3d8acb763179ba23c770bcdb4af8
_______________________________________________
darcs-devel mailing list
[email protected]
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel