[darcs-devel] darcs patch: Commute patches when getting a specific version of a repo

Edwin Thomson edwin.thomson at businesswebsoftware.com
Wed Feb 8 09:41:25 PST 2006


-------------- next part --------------
DarcsURL: http://www.abridgegame.org/repos/darcs-unstable
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_"

--=_
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Wed Feb  8 17:34:41 GMT Standard Time 2006  edwin.thomson at businesswebsoftwa=
re.com
  * Commute patches when getting a specific version of a repo
  Fix for issue 67

--=_
Content-Type: text/x-darcs-patch
Content-Transfer-Encoding: quoted-printable
Content-Description: A darcs patch for your repository!


New patches:

[Commute patches when getting a specific version of a repo
edwin.thomson at businesswebsoftware.com**20060208173441
 Fix for issue 67
] {
hunk ./Get.lhs 39
-                    slurp_all_but_darcs
+                    slurp_all_but_darcs, write_patch, read_repo
hunk ./Get.lhs 41
-import Patch ( apply, patch2patchinfo, invert )
+import Patch ( apply, patch2patchinfo, invert, join_patches )
hunk ./Get.lhs 44
-import Depends ( get_common_and_uncommon, get_patches_beyond_tag )
+import Depends ( get_common_and_uncommon, get_patches_beyond_tag, commute_=
to_end )
hunk ./Get.lhs 47
-import Pristine ( identifyPristine, createPristine, removePristine,
-                  createPristineFromWorking, flagsToPristine )
+import Pristine ( identifyPristine, createPristine,
+                  createPristineFromWorking, flagsToPristine, applyPristin=
e )
hunk ./Get.lhs 54
+import Unrecord ( rempatch )
+import Repository ( patchSetToPatches )
hunk ./Get.lhs 256
-       cur <- identifyPristine
hunk ./Get.lhs 263
-       write_inventory "." context
-       apply_patches_with_feedback opts feedback putInfo $
-                                   map invert_it $ head us'
-       removePristine cur
-       createPristine cur
-       createPristineFromWorking cur
-        where invert_it (pinf, Nothing) =3D (pinf, Nothing)
-              invert_it (pinf, Just p) =3D (pinf, Just $ invert p)
-              feedback =3D simple_feedback opts =

-\end{code}
+       let ps =3D patchSetToPatches us'
+       putInfo $ text $ "Unapplying " ++ (show $ length ps) ++ " " ++ (pat=
ch_or_patches $ length ps)
+       let (_, skipped) =3D commute_to_end ps patches
+       sequence_ $ map (write_patch opts) skipped
+       repo_patches <- read_repo "."
+       write_inventory "." $ foldl (flip rempatch) repo_patches (reverse p=
s)
+       pris <- identifyPristine
+       applyPristine pris (invert $ join_patches ps) `catch` \e ->
+           fail ("Unable to apply inverse patch!\n" ++ show e)
+       apply opts (invert $ join_patches ps) `catch` \e ->
+           fail ("Couldn't undo patch in working dir.\n" ++ show e)
+       sync_repo pris
+                        =

+patch_or_patches :: Int -> String
+patch_or_patches number
+    | number =3D=3D 1 =3D "patch."
+    | otherwise =3D "patches."                        =

+                        =

+                        =

+\end{code}                        =

hunk ./Unrecord.lhs 18
-module Unrecord ( unrecord, unpull, obliterate ) where
+module Unrecord ( unrecord, unpull, obliterate, rempatch ) where
}

Context:

[call unnamed patches "changes" in interactive patch selection dialogue
Tommy Pettersson <ptp at lysator.liu.se>**20060113203829
 It currently affects record, revert and amend, but will generally do
 "the right thing".
] =

[fix pathname in comment in darcs.cgi.in
zooko at zooko.com**20060112151135] =

[fix win32 build breaks
Will <will at glozer.net>**20060112054853] =

[fix content-type in rss output of cgi
Will <will at glozer.net>**20060110052938] =

[resolve conflict
Tommy Pettersson <ptp at lysator.liu.se>**20060108173148] =

[Obey normal autoconf conventions.
Dave Love <fx at gnu.org>**20051117190231
 Allows you to `make install prefix=3D...', for instance, and doesn't chang=
e
 default for sysconfdir.
] =

[add link to darcs-unstable repo on darcs home page
Tommy Pettersson <ptp at lysator.liu.se>**20060107212721] =

[Don't say "yes" in an infinite loop.
Bill Trost <trost at cloud.rain.com>**20060108162605
 I ended up with this test hanging forever because the while loop wasn't ge=
tting
 a SIGPIPE because of the way my editor environment (no controlling tty?) w=
as
 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 <kapheine at divineinvasion.net>**20060108174722] =

[More canonization
Eric Kow <eric.kow at gmail.com>**20060108235935
 =

 canonized : Mark Stosberg, Erik Schnetter, Joeri van Ruth =

 identified: Richard Smith, Victor Hugo Borja Rodriguez
 =

] =

[Improved single-character prompt (RT #261)
Eric Kow <eric.kow at gmail.com>**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 <eric.kow at gmail.com>**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 <eric.kow at gmail.com>**20060108222000] =

[Make the "record --pipe" docs match the program behavior.
Bill Trost <trost at cloud.rain.com>**20060107050910] =

[Make --exact-version also work if darcs is built from "make dist" tar ball
Marnix Klooster <marnix.klooster at gmail.com>**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, bu=
t
 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 manu=
al
 (currently at http://www.gnu.org/software/make/manual/html_node/make_127.h=
tml),
 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 <taralx at gmail.com> for the above info.
] =

[Coalesce setpref (issue70 and RT #349)
Eric Kow <eric.kow at gmail.com>**20051230230842] =

[only create log file when a long comment was requested
Zachary P. Landau <kapheine at divineinvasion.net>**20060108181034] =

[Use temporary file when editing send description.
Zachary P. Landau <kapheine at divineinvasion.net>**20051217212051] =

[Extended date matching functionality. =

Eric Kow <eric.kow at gmail.com>**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 <eric.kow at gmail.com>**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)                    =

 =

] =

[Allow rename to different case (RT #466, case-insensitive file systems)
Eric Kow <eric.kow at gmail.com>**20060106000141
 =

 Creates an exception in the check that the new name does not already exist=
s;
 it's ok if both names reduce to the same canonical path
 =

] =

[Update "darcs init" documentation to match its behavior.
Bill Trost <trost at cloud.rain.com>**20060105040737] =

[Invert 'file exists already' error message in mv
Eric Kow <eric.kow at gmail.com>**20051230220431
 =

 mv used the wrong error message for --case-ok and opposite =

 =

] =

[bug fixes for darcs help
Eric Kow <eric.kow at gmail.com>**20051230011003] =

[Canonize myself and almost all other contributers.
Eric Kow <eric.kow at gmail.com>**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.
 =

] =

[add a --without-docs option to configure
smithbone at gmail.com**20051228215710] =

[only print 'making executable' in verbose mode
Eric Kow <eric.kow at gmail.com>**20051226182817] =

[fix for Issue14 remove darcs-createrepo
Jason Dagit <dagit at codersbase.com>**20051224002230] =

[Support --interactive option in changes command (issue #59).
Zachary P. Landau <kapheine at divineinvasion.net>**20051221052049] =

[Fix type incompatibility between C code and Haskell foreign declaration.
Juliusz Chroboczek <jch at pps.jussieu.fr>**20060106154108] =

[Move patchSetToPatches to Repository.lhs
Zachary P. Landau <kapheine at divineinvasion.net>**20051219043719] =

[Use _darcs/pristine instead of _darcs/current.
Juliusz Chroboczek <jch at pps.jussieu.fr>**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.
] =

[Do not document "darcs query manifest" twice.
Erik Schnetter <schnetter at cct.lsu.edu>**20051222125103] =

[Rename git.c to gitlib.c
Erik Schnetter <schnetter at cct.lsu.edu>**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 <kraai at ftbfs.org>**20051220174536] =

[Implementation of help command
Eric Kow <eric.kow at loria.fr>**20051218172558
 (RT #307)
 =

 Provides a command to display usage information on the screen.
  darcs help           =3D darcs --help
  darcs help --verbose =3D darcs --extended-help
  darcs help command   =3D darcs command --help
 =

 This implementation understands abbreviated commands and subcommands.
 Slightly refactors darcs.lhs.
 =

] =

[reorganize comments (and add a comment) in Depends.lhs.
David Roundy <droundy at darcs.net>**20051218122029] =

[fix bug in doesDirectoryReallyExist.
David Roundy <droundy at darcs.net>**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 <droundy at darcs.net>**20050920125800] =

[rename RepoTypes to PatchSet.
David Roundy <droundy at darcs.net>**20050917133920] =

[remove PatchSequence, which has long been obsolete.
David Roundy <droundy at darcs.net>**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.
] =

[correction for send.sh test
Eric Kow <eric.kow at loria.fr>**20051218095652
 previously failed on (at least) MacOS X 10.3.9
 =

] =

[RemoteApply no longer depends on cd, use --repodir instead.
vborja at thehatcher.com**20051110140430
 =

 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=3Ddetail&aid=3D1351939&group_id=3D653=
49&atid=3D510643
] =

[Support signed push
Esa Ilari Vuokko <ei at vuokko.info>**20051129082159] =

[Fix typo in multirepo pull.
Juliusz Chroboczek <jch at pps.jussieu.fr>**20051217201918] =

[Fix merge conflicts.
Juliusz Chroboczek <jch at pps.jussieu.fr>**20051217201903] =

[add changelog entry for multirepo pull.
David Roundy <droundy at darcs.net>**20051215122808] =

[add support for pulling from multiple repositories simultaneously.
David Roundy <droundy at darcs.net>**20050919125012] =

[Use POSIX-style option for 'head', instead of obsolescent syntax
Marnix Klooster <marnix.klooster at gmail.com>**20051216111731] =

[Clarify wording for changes that can't be unreverted
me at JonathonMah.com**20051216151120] =

[Set attachment filename when sending a patch bundle by e-mail.
Zachary P. Landau <kapheine at divineinvasion.net>**20051217195009] =

[save long comment file if a test fails during record
Zachary P. Landau <kapheine at divineinvasion.net>**20051216023948] =

[properly quote paths so that paths with spaces in them are okay
zooko at zooko.com**20051121195057] =

[fix up debug printouts in cygwin-wrapper.bash
zooko at zooko.com**20051115011712] =

[smoother invocation of cygwin-wrapper.bash -- it detects fully-qualified p=
ath to itself by leading /
zooko at zooko.com**20051115011702] =

[modernize amend-record.pl to be more portable.
Mark Stosberg <mark at summersault.com>**20050402133417
 =

 This depends on the new "echo_to_darcs()" function in Test::Darcs
] =

[implementation of --set-scripts-executable on local darcs get
kow at loria.fr**20051210215122
 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
kow at loria.fr**20051210200615
 added check for local darcs get (issue 38) as well as initial sanity check
  =

] =

[Fix merge conflicts.
Juliusz Chroboczek <jch at pps.jussieu.fr>**20051214223217] =

[Add --subject flag to 'darcs send'
Joeri van Ruth <jvr at blub.net>**20051205120301] =

[print out the patch name when a test fails.
Zachary P. Landau <kapheine at divineinvasion.net>**20051205055109] =

[Fix mistyped /dev/null, fixes --sendmail-command in Windows
Esa Ilari Vuokko <ei at vuokko.info>**20051129160120] =

[Use \ as path separator for GnuPG in Windows -- makes apply --verify work
Esa Ilari Vuokko <ei at vuokko.info>**20051129164533] =

[make dangers and recommended use of "Amend" clearer in the docs.
Mark Stosberg <mark at summersault.com>**20051213140523
 =

 I think it's important to be clearer about when it's appropriate to use 'a=
mend',
 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 <ptp at lysator.liu.se>**20051213111137] =

[fix handling of absolute paths containing drive letters
Will <will at glozer.net>**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 <ptp at lysator.liu.se>**20051208092839] =

[revert maybe_relink and atomic_create to original C code.
David Roundy <droundy at darcs.net>**20051208131213] =

[resolve conflicts between stable and unstable.
David Roundy <droundy at darcs.net>**20051206134818] =

[Merge changes
Ian Lynagh <igloo at earth.li>**20051008225210] =

[fix mkstemp implementation for win32
Peter Strand <peter at zarquon.se>**20050810211303] =

[Implement parts of System.Posix.(IO|Files) for win32
peter at zarquon.se**20050809200433] =

[implement RawMode with library functions instead of ffi
peter at zarquon.se**20050809200148] =

[call hsc2hs without output filename argument
peter at zarquon.se**20050808220444] =

[Rename compat.c to c_compat.c to avoid object filename conflict with Compa=
t.hs
peter at zarquon.se**20050731114011] =

[Move atomic_create/sloppy_atomic_create to Compat
Ian Lynagh <igloo at earth.li>**20050730141703] =

[Split the raw mode stuff out into its own .hsc file. Windows needs some TL=
C
Ian Lynagh <igloo at earth.li>**20050730134030] =

[Move maybe_relink out of compat.c
Ian Lynagh <igloo at earth.li>**20050730131205] =

[Remove is_symlink
Ian Lynagh <igloo at earth.li>**20050730122255] =

[Move mkstemp to Compat.hs
Ian Lynagh <igloo at earth.li>**20050730020918] =

[Start Compat.hs, and move stdout_is_a_pipe from compat.c
Ian Lynagh <igloo at earth.li>**20050730004829] =

[TAG 1.0.5
Tommy Pettersson <ptp at lysator.liu.se>**20051207112730] =

Patch bundle hash:
ad541afcc6645baa4ebdb7bb0c383fe119ace6a0

--=_--

.



More information about the darcs-devel mailing list