Jason's Dev Page
My projects, MacHg, Cocoa, C++, Mercurial, and other goodies...
All Release Notes...
Version 1.0.2November 10, 2014
A small release which fixes the single bug that in Yosemite where running MacHg for the first time, MacHg would crash.
Version 1.0.1November 9, 2014
This is a large release which is mainly “under-the-hood” changes. MacHg was crashing with changes in Yosemite and this release fixes that and other related problems. Moreover, this version switches from Garbage Collection to using ARC as the backing memory management system for MacHg. Also all the internal code has been switched to “Dot Syntax”. This updates now provides a good base to move forward with updating the interface to handle new features in Mercurial and in the interface.
▪ Yosemite support.
▪ The internal memory management switched to ARC from GarbageCollection.
▪ The internal code switched to “Dot Syntax”.
▪ Code signed. (This release is code signed by me as a registered apple developer, so it doesn’t need a security exception to install it.)
▪ Many, many bug fixes, additions and improvements.
Version 0.9.25November 13, 2011
MacHg 0.9.25 updates MacHg to fix more Lion compatibility issues including fixes for keychain items, adds searching by revsets, and fixes bugs.
- Add the capability to search by revsets and revision id's in the History View.
- Add a help page for information on searching by keyword, id, or revset.
- Fix issue #283. Make sure we properly quote paths when going to the terminal.
- Fix issue #276. Make the screen results messages pop up on the same screen as the document.
- Fix crash which can occur when you are actively editing the information in the import sheet and you click the import button.The solution is to first finalize all fields which are being actively changed and then do the import.
- A better fix for issue #275: make the LogTableView columns non-editable in all of the xib files.
- In order to detect null results from a Mercurial command when something has gone wrong with the launching of a Mercurial task, we change the underlying mercurial to allow it to specify a --header option. We then look for this header in all output. If we didn't get the header we know the NSTask launch failed. This should once and for all fix the problem of null Mercurial results, which have plagued me in NSTask in the past.(TLMTask seemed to solve a lot of these problems, and things under Lion seem better yet again.Still better safe than sorry here!)
- Remove the --header being output to the log file, so if people copy and paste commands from the log file, then they still get the correct results.
- When you now clone a local repository, the default path chosen by MacHg will be to one that does not already exist.(If the default name exists, a decimal number is added to the suffix to ensure the path is a new one.)
- Fix bug where closed heads were not being visually drawn as closed. This happened when the head wasn't labeled with a name.To do the fix, change closedBranchHead -> isClosedBranchHead.
- Change the shortcut cmd-I to be configure server / local repository.
- Retarget a few of the AppController actions so they go directly out to the AppController instance.(XCode 4 has problems if these are not correctly targeted.)
- Fix issue #184. (MacHg searches harder for the location of FileMerge.)
- Look to /Developer/usr/bin/opendiff if /usr/bin/opendiff doesn't exist. It doesn’t exist on newer installs of the developer tools. (No thanks to Apple for that handy change!)
- Ensure that we launch FileMerge at least once if the workspace manager doesn't think FileMerge exists due to it’s not having been launched before.
- Fix issue #277. Get nicer information printing in the terminal when we launch it.
- Update to latest version of EMKeychainItem.
- Fix logging message by GetMacOSStatusErrorString -> SecCopyErrorMessageString
- Update .hgignore file for transient project files produced in XCode 4.
- Fix issue #204. (Fixes problem with saving of passwords in server configurations due to bug in keychain handling in Lion.) (It turns out that [... removeFromKeychain], which calls SecKeychainItemDelete, is causing keychain problems under Lion.This might be fixed in a later update, but it is the causeof #204 and I think #263 as well by the sound of it.)
- Add output-prefix to the progress extension.
- Use the prefix option I just added to Progress to add the prefix ‘MHGProgress:’, which we can specifically look for and strip out of the error messages. This makes the progress reporting more robust and also makes things like the ban-changesets extension interoperate nicely with MacHg.
- Update the code overview slightly.
Version 0.9.24September 18, 2011
MacHg 0.9.24 updates MacHg to fix Lion compatibility issues, and also updates the underlying Mercurial to the latest version 1.9.2
- Fix hi-lighting glitch in marking paths as dirty after a "Revert Paths to Selected Version" was not updating them after the reversion operation.
- Allow the exclusion of hunks on import.
- The overhaul of import functionality is a precursor to doing hunk level commits.
- Upgrade xib files for Lion.
- Upgrade project for 10.7.1 and XCode 4.1.
- Clean up the XCode project by using configuration files (thanks to Daniel Kliman)!
- Turn off the compiler warnings for RegexKitLite.m under Lion.
- Update ignore file since the build directory is now called DerivedData.
- Fix an unreported bug manifested under Lion where reveal in finder was not working anymore since activateFileViewerSelectingURLs needs NSURL's created by fileURLWithPath and not just URLWithString.
- Add a "Keep Backup" option to the strip sheet which defaults to "On".
- Make the message reporting for the strip sheet better.
- Make backing view buttons look much nicer in Lion.The previous Rounded Textured buttons looked nice under Snow Leopard but are pretty ugly in Lion.
- Fix the bug that under Lion the first time you opened the History View the selection would jump to the beginning of the log view.
- Experimental fix for assert problem under Lion
- Update cedit for 1.9 compatibility.
- Upgrade to Mercurial 1.9.2.
- Fix the localhg script for hg 1.9.2.
- Update and move my updates to the histedit extension from Augie and others to bring it into line for Mercurial 1.9 and above.
- Change the default editor to open tTxtEdit via 'open -t -n -W'. This fixes using the editor under Lion (at least for me) where I was getting wierd permission problems from opening TextEdit via /Applications/TextEdit.app/Contents/MacOS/TextEdit in my hgrc file.
- Fix another Lion bug, where command-clicking in the title bar wasn't popping up the path to the repository, whereas it did in SnowLeopard.
- Bump up the release version to 0.9.24.
- Small update to enable the 'up to date' checkbox when a user clones a repo.
- Fix hg extension improper labeling of closed anonymous heads.(Fixes #271) (Thanks to Robert Kluin.)
- Fix issue #273, where inertial scrolling caused the appearance of trash on the screen in Lion.(Thanks to Eugene Golushkov.)
- Add a message to ameliorate #issue 184.
- Fix issue #275. Make all columns in each LogTableView non-editable.
- Others who contributed patches to this release: Daniel Kliman, Eugene Golushkov, and Robert Kluin
Version 0.9.23May 6, 2011
MacHg 0.9.23 is a simple bug fix release. This further fixes the crash which occurred when a user double clicked a file which had no changes for all diff tools. This issue had been variously reported as #244, #248, #249, and #252.
- Fix #252 for all diff tools.
- Fix #253 by not allowing empty commit messages.
- TLMTask doesn't handle empty arguments well, which was the cause of several recent crashes. So fix this generally.
Version 0.9.22May 5, 2011
MacHg 0.9.22 is primarily a bug fix release. Importantly fix a crash which occurred when a user double clicked a file which had no changes. This issue had been variously reported as #244, #248, #249.
- Fix #242. The force merge checkbox was not bound to the property forceTheMerge.
- Fix #236. Choose an appropriate sheet size upon opening some sheets.
- Put the "clone arrow" back in the clone sheet (It had been missing for several revisions).
- Fix crash which can occur if the file is empty. This was reported as #244, #248, #249 and was caused by a code path which was exposed by switching to TLMTask.
- Fix #239. Use recycleURLs:completionHandler: instead of FSMoveObjectToTrashSync
- When opening the push / pull / incoming / outgoing sheets quickly the icon size could sometimes be messed up while the various repositories were still being checked.Fix this by forcing the icon size to be correct if necessary.
- Make Strip and Rebase report their progress.
- Fix a crashing bug which can occur if you collapse a changeset which adds a file together with a changeset which removes the same file.
- Fix #247. For the external diff tools DiffMerge and KDiff3, send all the files to be diffed in one group.This solves the problem of multiple diff tools launching.
- Move the code which loads and shows the "about MacHg" panel to its own class and file.
- This fixes the case when opening the about MacHg panel more than once would make the webkit view stop working.
- Add a ‘--force’ option to the strip sheet so the user can ignore outstanding changes when performing a strip operation.
- Address #43. Move the default servers after the documents servers.
- Internal changes to use dispatch_once to do initializations in document instances.
- Fix logic error and warnings which compiling under XCode 4.01 revealed.
Version 0.9.21April 15, 2011
MacHg 0.9.21 switches from NSTask to TLMTask to fix intermittent dropped tasks and hung tasks; and fixes the crashing bug #234 which has now been reported 3 times.
- Switch NSTask over to TLMTask and BDSKTask.These are complete 'drop-in' re-implementations of NSTask which are thread safe and fix the errors I have been having with NSTask. A big thank you to Andrew Maxwell who wrote these!
- If a browser status task fails for some reason (I have seen this very occasionally) then try again after half a second.
- Fix #234. Fixed the crash in updating the "Open With..." contextual menu for files without associated application.
- Add version numbers to the "Open With..." items.
- Fix #230. DeltaWalker support of working with Hg still seems a bit flaky though.
- Fix #237. I had forgotten the addToChangedPathsDuringSuspension call.
- Fix small cosmetic detail of trailing ':' which should not be present in the rename sheet.
- Fix bug where if switch to a repository when we have "show up to date files" switched off and hence wouldn't show any files, then the browser wouldn't actually change the file listing upon switching to the new repository.
- In this release there are contributions from: Eugene Golushkov (Fix for #234). Thanks!
Version 0.9.20April 10, 2011
MacHg 0.9.20 now continually reports the progress of long running operations such as clone, push, pull, incoming, and outgoing; adds an ‘Open With...’ menu item; adds a 'Scroll to Changeset...' menu in all log views; updates the bundled Mercurial to 1.8.2; and includes a number of other fixes and enhancements.
- After more exploring on the topic of NSTasks and feedback from the cocoa-dev lists, I switched to a runloop based approach, since the waitUntilExit approach was dropping several of the results. This hopefully fixes #215, #231, and others.
- Add 'Scroll To Changeset...' in the main menu and the infrastructure to put up a panel asking for the changeset hash / revision / named tag / named bookmark / named branch to scroll to.
- Key command equivalent for 'Scroll to Changeset...' is cmd-L.
- All LogTableView's can handle this event so anywhere you see the history graph you can hit cmd-L to bring up the panel to jump to a changeset.
- Implement #159. Add an 'Open With...' contextual menu.
- Implement #162. Report the progress for all push, pull, clone, incoming, and outgoing operations.
- When we are getting the repository information put up a progress indicator in case this takes awhile. (Do this through a ProcessController.)
- Make icons appear in the popuped up menu in the sheets for: push, pull, incoming, outgoing.
- Flip the defaults and switch over to requiring verifiable host identities for https connections.
- Upgrade to Mercurial 1.8.2
- Move the diff and merge tool options to the Mercurial tab of the preferences. This is a more consistent place for these options.
- Watts Martin pointed out to me that 'Changes' can actually be used as a merge tool so add 'Changes' so it smoothly works as a merge tool.
- Fix #222. I added a call to contentsOfDirectoryAtPath to check if there are not > 0
- Related to #222 if you delete all files from a folder in Finder, .DS_Store remains.If the folder contains only the .DS_Store file, then remove the file and proceed.
- Update rootPath_ correctly in the repositoryData.
- Fix a bug where sometimes MacHg wouldn't save the document after determining a new repository identity.This stopped the incoming / outgoing counts always appearing correctly after a clone.
- Fix combinedinfo so that if a tag isn't found or other problems occur then the whole computation is not aborted.
- Change context menu here to just view the differences in the selected revisions.Like the default of double click.(The old 'Diff All to Files to Revision' can be easily done through the differences view.)
- Fix #229. Properly escape '.'
- Fix the updating mechanism for MacHg's configuration files after fixing #229 to ensure the hgignore and hgrc files are updated for everyone.
- Update code conventions.
- Add exectueOnlyOnce which uses dispatch_once.Switch initialization in several places to use exectueOnlyOnce.
- Tweak vertical position of warning button to do with history editing.
- Fix extdiff for p4merge amongst other tools by including the absolute path of the files to compare.
Version 0.9.19March 29, 2011
MacHg 0.9.19 Fixes #223, where the amend functionality in the commit dialog was no longer working. I had forgotten to explicitly include the mq extension after switching to have commands only load extensions when they explicitly need an extension. (I have the mq extension switched on in my personal settings since I use it a lot, so the amend functionality was working for me and consequently I didn’t notice this.)
Version 0.9.18March 28, 2011
MacHg 0.9.18 Fixes #221, where sometimes the users repositories would disappear when updating to MacHg 0.9.17. MacHg 0.9.17 moved the folder ~/Library/Application Support/MacHg/ to the trash when updating to the latest MacHg. All these support files are then regenerated with the latest settings for diffing and merging tools and the other enhancements. I forgot that the default location for Repositories.mchg was inside this folder, thus to some users it appeared that their repositories were being trashed. MacHg 0.9.18 fixes this issue.
Version 0.9.17March 28, 2011
MacHg 0.9.17 greatly improves external diffing and merging tool support. You can now simply select a diffing tool and separately a merging tool from the drop down menus in the advanced preferences of MacHg. MacHg now directly supports the following external tools: FileMerge, AraxisMerge, P4Merge, DiffMerge, KDiff3, DeltaWalker, Kaleidoscope, Changes, DiffFork, BBEdit, and TextWrangler. Additionally, more development has gone into NSTask handling, which solves several bugs in this critical area. Mercurial extensions are now only referenced when needed for a small speed boost. MacHg 0.9.17 also updates the included version of Mercurial to the latest 1.8.1. Other improvements in ssh configuration and disclosures have been added. In addition, other small fixes and enhancements have been made including fixing #76, #98, #122, #163, #179, #198, #209, #211, #212, #214, #217, #218, as well as other unreported issues.
- The source code never references the singleton instance of TaskExecutions, so it can be removed.
- Fix #211.
- Make the DebugLog statements shorter.
- Fix all static analysis errors.
- Change internal wording from 'abandoned repository' to 'discarded repository'.
- In loadCombinedInformationAndNotify, if we detect a root change, then post the notification kRepositoryDataIsNew.
- Move to 'Moriarity' style NSTask handling, i.e.handle notifications for gotNewData, gotError, and gotExit.(Specifically, these are the notifications NSFileHandleReadCompletionNotification, NSFileHandleReadCompletionNotification, and NSTaskDidTerminateNotification.)
- Use NSTask::waitUntilExit to get the notification synchronization correct.
- See http://lists.apple.com/archives/Cocoa-dev/2011/Mar/msg00467.html
- Fix #179.
- Add a ShellTaskDelegate so that we can interact and get feedback from the NSTask as it's executing.
- Remove TaskExecutions::synchronouslyExecute and instead use ShellTask::execute.
- Change ShellTask::execute so it has an argument withEnvironment:
- Fix extdiff for p4merge amongst other tools by including the absolute path of the files to compare.
- Ensure that the latest repository identity is always saved.Moreover, after selecting a local repository reference, compute its repository identity always.(Fixes a bug where it could appear that the repository identity was not being recorded.)
- Switch the animation from a frame width based animation to a fade in / out animation when the option value field is enabled / disabled.(This fixes a bug where the field width could get "stuck" in a short state when the field was changing very rapidly due to scrolling up or down through a list of possible push / pull repositories.
- Fix #212. Make sure the exclamation mark '!' is in quotes in passwords.
- Fix #217. Add a "Manage a Repository" button to the backing pane.
- Fix #163. For Kaleidoscope, send the list of all files to be diffed in one command so they appear in the same Kaleidoscope window.
- Address #163. Apply fix that was pointed out by MrTact for colonTerminated.
- Ensure that MacHg's ~/Application Support/MacHg/hgrc file takes precedence over ~/.hgrc
- Permit the use of a different merge tool through the '--tool' option to merge.
- From the preferences add a drop down menu where you can select your external diffing tool.The setup should be automatic.If the diffing tool is not on your machine, you will be warned.If it is on your machine then MacHg will configure its ~/Library/ Application Support/MacHg/hgrc file for this diff tool.
- Diff tools currently supported are: FileMerge, AraxisMerge, P4Merge, DiffMerge, KDiff3, DeltaWalker, Kaleidoscope, Changes, DiffFork, BBEdit, TextWrangler.
- Add some common diff tool settings directly to the hgrc so that the tool integration is easier.This fixes #76, #98, #122, #163.
- (Thanks to the folks at Araxis I am allowed to include their scripts in MacHg!)
- Add utility ensureFileExists:orCopyFromBundleResource: to ease the copying of files from the application bundle.
- Use external diff application icons in the drop down menu for a little bit of visual glitz.
- All this time I had got the syntax for an "in-call hg extension" specification wrong. Therefore I changed lots of things like @"hgext.cedit=" -> @"extensions.cedit=" or @"hgext.rebase=" -> @"extensions.rebase=", etc.Once this is done, then I no longer need to include the extensions explicitly in ~/Library/Application Support/MacHg/hgrc. This is potentially faster and more stable due to the extension being only ever loaded when it is needed and no parsing or set up time is ever used unless its truly needed.
- Fix bug where sometimes the file details would be missing.This appeared to be happening due to tasks being launched within the same iteration of the run loop. Dispatching seems to solve the problem.(I still wish the whole NSTask thing was much more reliable.)
- If multiple disclosure boxes are being disclosed, then after the first one, ensure no animation occurs during the disclosure process of the others.
- Update to Mercurial 1.8.1 and apply patches to Mercurial to make it work with MacHg. Happily, most of the necessary patches to Mercurial for MacHg have now been included upstream.
- Update bookmark handling in my combinedinfo extension for Mercurial 1.8.x since in Mercurial 1.8.0 bookmarks have been moved into core functionality.This fixes #214.
- Fix extdiff for p4merge amongst other tools by including the absolute path of the files to compare.
- Fix #218. SSH connections can't take passwords from MacHg.The connection needs to be handled so it occurs non-interactively.
- Fix #198. Only give the FileMerge warning at startup if FileMerge is being used as a diff or as a merge tool.
- Fix #209. Make pasting URL's into the server field strip any new lines and clean things up a bit.
- Code cleanup: Remove trailing whitespace.
- Update help pages.
- Add option to the appearance preferences to control the formatting of dates, if the dates are "relative" to now, or "absolute" in the form 27 Mar 17:56.
- Fake a --tool option when rebasing by specifying the priority of the current merge tool to be a high value.
- We no longer need to explicitly include ext.bookmarks since it's now in core.
- When we update from older versions of MacHg we need to update the ~/Library/Application Support/MacHg files.In this version of 0.9.17 there are important updates for the diffing and merging tools.
- Others who contributed patches to this release: Vlad Andersen, Kevin Herron, MrTact(Thank you all!)
Version 0.9.16March 7, 2011
Bug fix version for critical UI #204 which got introduced very late in the cycle of development of MacHg 0.9.15. Nothing bad could happen to your repositories, but it was no longer possible to add new repositories to MacHg, which is clearly a very bad thing in a DVCS. Thus fix it with the release of MacHg 0.9.16.
Version 0.9.15March 6, 2011
Release 0.9.15 significantly revamps and improves the push, pull, incoming and outgoing sheets; significantly revamps and improves the server configuration sheet; now always stores passwords in the system keychain; adds support for handling of google code repositories and svn repositories; has "under the hood" improvements in the way disclosures are handled; and fixes or addresses many smaller issues including: #98, #116, #170, #184, #193, #200, #202, and many other unreported issues.
- Update the help pages.
- Add some help tool tips.
- Add help links to MacHg sheets and dialogs in various places.
- Fix the missing revealer icon (thanks to Arjan for pointing this out).
- Make the reveal toolbar action applicable outside just the browser.
- Add a "Diff All" button to the Details view drag bar.
- Add ability to annotate base and compare revisions in differences view
- Add more internal utility methods for working with disclosures.
- Fix a subtle bug when initializing multiple disclosures within the same view.
- Revamp the push, pull, incoming, outgoing sheets to change their orientation to above and below ( from left and right.) This orientation now matches the arrows in the status and is now uniform.Also many other programs have an up arrow being publish or push to the world.
- In the "Transmit" sheets list the URI of the source and destination.(in a small unobtrusive way)
- Ensure that any URI's shown do not reveal any passwords.(Passwords are as before still set through the server configuration sheet.)
- Add category method growToFit to NSBox and use that to ensure that the mainGroupingBox in the "Transmit" sheets only grows in size.
- When deleting a bookmark / sidebar item only switch the backing view if the item being deleted is the currently selected item.
- A clean update resets the history edit and rebase states.
- Fix the abort of a HistoryEdit so now it is truly aborted.
- Really ensure that a rebase can be aborted from.
- Include all servers available in the hgrc's [paths] section in the compatible paths if they are not already included.
- Expose the validation results of a connection through a "details" button so users can see what the actual commands were that caused connection success / failure.
- Show and hide the details button in the connection validation as we get new results.
- Revamp of the configure server sheet to include a username, password, and full url.
- All passwords are now stored in the system keychain.
- It turns out the HGPLAIN being true doesn't always imply non-interactive.Thus for push, pull, incoming, outgoing, and clone ensure that --noninteractive is specified. This stops apparent hangs where internally Mercurial is waiting for a password which of course isn't coming since MacHg thinks it's working non-interactively.
- Improve URL handling including the ability to control the showing / hiding of the password in the returned URL result. This allows us to have fine grained control of the display of sensitive passwords in user visible parts of the interface.(Sometimes we want to show and other times we want to hide the passwords.)
- Make the details and test button automatically position themselves just to the right of their messages.
- Add advanced options disclosure to the server configuration where you can specify the repository identity for when 'hg identify --rev 0' does not yield a valid hash key, eg google code repositories, hggit repositories, svn repositories, etc.
- Ignore more paths that hggit uses so you can use the hg-git extension with MacHg.
- Fix the condition where multiple threads could initialize the FullDateFormatter at the same time and cause a crash.
- Add the branch column to the other LogTableViews.
- Pin the 'Force Merge' to the correct side.
- Add a contextual menu item for backout.
- Use the currently selected revision in the history as the starting revision when opening the backout sheet.
- Generalize the "on open" menu to be a "on activation" menu.
- Fix #202. Switch the format of UserDefaults.plist from binary to ascii in order to easier manage the defaults.
- Motivated by a patch Kim Hunter sent me, add handling for drawing missing repositories in grey.
- Show a good details connection graphic when the connection is good.
- Fix #116. Quote all regex characters when adding patterns to the .hgignore file.
- Fix #170. In the case that the user has created a repository outside MacHg, and that the user didn't add the .hgignore file to the repository, don't ignore the .hgignore file itself.Existing users need to delete ~/Application Support/MacHg/hgignore to see this fix.
- Switch storage of the repositoryIdentities to be application wide.
- Add computeRepositoryIdentityForPath:(NSString*)path forNodePath:(NSString*)nodePath
- If we clone from a server then set the parent servers repositoryIdentity. This makes working with eg google code servers smoother for the user.
- Add copyNode and switch copyNode and copyNodeTree to the constructors section.
- Implement #193. Provide a hierarchy when choosing the compatible repository in push, pull, clone, incoming sheets.(The popup is in the Safari bookmark style hierarchy.)
- Choose the correct initial choice for the popupMenu of compatible servers & repositories.
- In this release there are contributions from: Kim Hunter (reload last document improvements), Matthew Watson (addition of branch column), Eugene Golushkov (Ability to annotate base and compare revisions in differences view, #200). Thanks guys!
Version 0.9.14February 7, 2011
Release 0.9.14 adds the ability to drag and drop from the browser to the dock or finder; improves importing and exporting patches; fixes a major bug to do with very heavy processor load and visual flickering; updates the Mercurial bundle to 1.7.5; handles the new security model of Mercurial 1.7.5; includes TrustedCertificates for https connections; fixes handling of external diff tools for the users who were having issues; and fixes or addresses many smaller issues including: #136, #148, #158, #159, #163, #164, #173, #178, #179, #181, #185, #189, #192.
- Fix #148. What was happening was that the old RepositoryData was still in existence and listening to notifications, even though the document didn't point to it.Thus, when a kUnderlyingRepositoryChanged notification was generally posted, this limbo RepositoryData was still trying to update itself.But this caused a problem since the repository no longer existed on disk, so it asked for another update which again triggered the limbo repository to ask for an update, etc. Meanwhile, the good repository that the document actually pointed to was also observing these repeated notifications to keep updating, and so it flickered as repeated and unceasing updates took place... All of this wound the CPU up to maximum. The fix was to abandon and cut off the repository data when we switch the view to the backing view. (See the full logs for details). This also fixes #158, #164, #173, #178, and addresses #179.
- Make the drop down menu which appears when you command click the window title point to the currently selected repository instead of the current MacHg document.
- Allow dragging and dropping from the Browser View into external applications to open the selected files in those applications.
- Drag and Drop can now be used to make copies of files if you drag and drop onto, say, the desktop.
- Drag and Drop now also allows you to make a copy / view an historical version of a file by dragging from the browser in the Differences View into the finder.
- Change the Differences View's contextual menu Open -> OpenSnapshot and have it open an historical snapshot.
- Get the correct validation for the Open Snapshot menu.
- Improve the Import Patch sheet by adding a diffstat summary to the output, vertically centering the lines in the PatchesViewTable and increasing the table line size for better visuals, changing the overall diff color scheme to make the diff more like other diff's around (e.g. github or bitbucket), and improving the editing of the patch author and patch date.
- Include the .hg directory in the chain of directories so it's easy to pop to the enclosing folder.
- Fix #163. Most users likely have /usr/bin/local on their path through ~/.MacOSX/environment.plist but some don't, as in the report of #163. Make MacHg add /usr/bin/local to the path if it's not already on the path when calling external functions.This solves #136 since the Kaleidoscope scripts require this to be on the path.Thanks to George for finding this!
- Fix #185. Catch the case when ignore.includepat doesn't exist.
- Monitor the ~/Application Support/MacHg/hgignore file for changes.(~/.hgignore and the repositories .hgignore are already monitored.)
- Allow cedit to work with .dotted properties, and through this better define the ignore handling path.
- Fix issue where selecting the same revision for both the base and the compare in the differences view would show all differences from the initial repository up to that revision.Instead, it should basically print the manifest for that revision.
- Fix #185. Catch the case when ignore.includepat doesn't exist.
- Update to Mercurial 1.7.5
- Mercurial 1.7.3 introduced a somewhat disruptive but ultimately more secure way to handle https security.
- In Mercurial 1.7.4 host fingerprints were added and MacHg makes use of these.
- In order to work with the new security model, I made changes to the underlying Mercurial bundled with MacHg, changes which now allow the handling of the option '--insecure' to work in a way compatible for GUI clients.
- Now when '--insecure' is specified, warnings will not be printed for sites which can't be verified due to not knowing about the site. Sites which are invalid according to the certificates present on the machine will still issue warnings. '--insecure' also needed to be added to the identify command as well.
- Add preference option 'Require Verifiable Server Identity' to turn off server identification security while we all transition to this new security model. This option basically controls the global use of --insecure. For now the default is to use --insecure but you can switch this to secure. In the next release, after discovering the problems users encounter in the real world, I will transition to secure by default. But it's important to allow the dust to settle a little on this before I enforce this on everyone.
- On startup check for trusted certificates, and if not present install the default certificates.
- After uncovering a file error to do with encoding, be more vigilant about reporting OS level errors.
- 'About box' now only ever exists once and becomes key window immediately (Noah Spies)
- Sebastian Krysmanski has submitted quite a few reports, so add him as a tester.Thanks Sebastian!
- Fix #189. Add support for renaming of directories, and make menus and the rename sheet adjust the titles and messages according to whether we are renaming a file or a directory.
- Update the Help with the pages AboutTheCommandLine and about AboutServerIdentitySecurity and many smaller edits.
- Add a link to the MacHg Help from the alert for host identification verification.
- Fix #192. Preselect the currently selected version when doing an update.
- Add Reveal toolbar button to reveal the current selection in the finder.
Version 0.9.13January 24, 2011
Release 0.9.13 adds QuickLook support, error disclosures, .hgignore event handling, UI improvements, and fixes a number of issues.
- Add Quicklook support to MacHg.
- QuickLook works in all three main views : the Browser View, the History View, and the Differences View. Using QuickLook it is easy to see the contents of historical versions of the files without having to update to that version.
- Fix Differences View double click actions.
- QuickLook panel now refreshes on changes to views and switching between views.
- QuickLook support is now delegated to each view.
- Improve compatibility with Google code repositories.
- Change Mercurial by adding the Mercurial command "debugignore" which yields the combined ignore pattern of the .hgignore files. (The patch has been submitted to Mercurial proper.)
- Fix #177. Respect the combined regex from the .hgignore files returned by debugignore.
- Check the last modification dates on the common .hgignore files to ensure that if they change, we will refresh the combined hgignore regex.
- Greatly improve the functionality of DisclosureBoxController. Disclosure boxes can now function even if there is no disclosure button.This allows them to be used programmatically to display for instance error messages.
- Fix bug where the sizing of dialog sheets containing DisclosureBoxes couldn't be restricted. This was only a visual glitch, but it was annoying. Thus, fix the clone, push, pull, incoming, and outgoing sheets by now correctly only allowing horizontal resizing.
- Add RSVerticallyCenteredTextFieldCell to the MacHg project and use it in error disclosures.
- Fix #155. Add an error disclosure box to the RenameSheet to display warnings about the choices of names when renaming.
- Change the CloneSheet to use an error disclosure box.
- Remove warning when using the amend option in the CommitSheet. The amend option has proven itself to be robust and I have been using it for a while now and quite like it.
- Fix #166. Remove use of DTCPathView.
- Fix #71. The resolved icon is no longer shown in the Differences View.
- Add a safety case to the merge sheet message.
- Fix spelling of 'FIles' in several places. (Thanks to Marius Ursache)
- Fix #171. Change wording "unknown" -> "untracked".
- Fix #147. Add a "Commit All" toolbar button.
- Fix #175. Make sure we add a line break to the end of .hgingore before adding new ignore contents, if there is no line break already present.
- Fix #174. Only the last column of the browser should be considered "selected".
- Handle case of empty or "virgin" repositories where the tip is rev number -1.
- Fix #165. Fix my Mercurial extension combinedinfo so it no longer reports closed branches as open heads.
- Add a separate check box for showing / hiding the closed branches.
- Address #109. Make closed branches draw with a bar and not a dash.
- Update help pages.
- Revamp the status, preferences, and toolbar icons with the artwork of David Keegan, which I then tweaked slightly.
Version 0.9.12December 27, 2010
Release 0.9.12 adds stable graph drawing and large speed and optimization improvements to load times.
- This is achieved through a massive refactor to enable stable graph drawing and increase loading speed.
- Stable graph drawing is when you scroll in history, the graph is incrementally added to and so it doesn't "jiggle". This was #31 and probably the number one user complaint and it was quite annoying, but it's now fixed.
- This refactor is recorded as one single combined changeset which is the result of collapsing about 100 changesets done over a period of months.
- I went through a number of approaches and so I have collapsed things down to the final form I settled on since the development process was a little tedious and there were more than a few false avenues.
- It would be nice if I could have broken this up into about 3 or 4 big commits but the history as I did it was intertwined.
- One main change is I standardized on NSNumber's as revision keys instead of NSString's. (It turns out in simple testing that NSNumber handling is around 2 to 3 times faster than NSString handling, but mainly since I had NSString's and NSNumber's before I wanted to standardize on one single type.
- Another main theme of the refactor is to switch to quick LogEntry loading with almost no details apart from the revision number and changeset id.All the details are stored permanently in a LogRecord for any given changeset, which once we load, we never have to load again since it will never change.
- Thus we make much of the information persistent instead of simply reloading it whenever changes occur, as we did in the past.
- There was a lot of experimenting with my own graph layout algorithms.It's quite important that this layout is fast, and the current layout speed is around O(n^2) in the number of chains.(You can think of a chain as a single continuous column in the laid out graph.)
- There was also a lot of work on getting the notifications flowing correctly when the underlying repository changes, or the labels change, or the log entries change.
- Along with the notification work there was a lot of work on getting the loadStatuses correct for LogEntries and repository data.
- Label handling is now simpler than it was before and is pretty much done on demand, whereas there was some complicated caching before this refactor.
- Added the Mercurial extension "combinedinfo", which I wrote. "combinedinfo" will give information on the tip, parents, local tags, global tags, bookmarks,active branches, inactive branches, closed branches, and open heads, all in a single hit, so it's much faster this way to get this repository information.
- Switched to approach where we maintain a collection of fall back entries, and a fall back graph which we use while we are waiting for new information from Mercurial.
- Minimized the number of underlyingRepositoryChangedEvents which are issued to improve performance
- The FSBrowser now responds to kRepositoryDataIsNew notifications instead of kRepositoryRootChanged.This ensures that the repository is initialized; i.e., the Browser is responding to the initialization of the repository, not just the changing of the repository root which is issued by the side bar.
- Now the document only initializes a repository if the root has really changed.
- Added filterLabelsAndExtractNames and use it in Sidebar.m to get the tags, and bookmarks of the current parent. This avoids having to fetch entries and leaves the fetching of entries to the LogTableView and other objects, which in turn can avoid multiple loading of entries.
- Fix #157. Change Ok button for Push and Pull sheet to "Push" and "Pull"
- Fix #150. Prohibit the editing of the activity messages.
- Fix #151, the confusion of Delete vs Remove.
- Change "Add Selected Files" -> "Add (Track) Selected Files" and
- Change "Remove Selected Files" -> "Remove (Untrack) Selected Files"
- Change underlying Mercurial to store tags.cache and branchheads.cache in a collected cache folder .hg/caches/. This allows MacHg to ignore these cache file events which in turn can eliminate double refreshing of the underlying repository information.
- Nicer graph drawing.
- Get the contextual menus right.
Version 0.9.11December 2, 2010
- Fix glitch with the MacHg 0.9.10 release to do with a reported error due to not having the cedit extension installed.
Version 0.9.10December 2, 2010
- Update to Mercurial 1.7.2 (The latest Mercurial at this time.)
- Use Python 2.6
- Add a Backout sheet to implement the "hg backout" command.
- Ensure MacHg can abort from a stale rebase. (Submitted the patch upstream to mercurial-devel, but I think they will come up with a more complete way to solve this.)
- Update the help pages by including all the commands in the action and repository menu in the index.
- Add help buttons to all applicable sheets. (Although some of the help is only a paragraph or so at the moment.)
- Fix some grammar issues in documentation by transforming "its" -> "it's" where applicable.
- Fix #141. Allow hooks configured in the hgrc files to work with MacHg. (Fixed by setting the PythonPath and the environment variable HG correctly.)
- Fix #144, while at the same time keeping #67 fixed.
- Fix bug where the file browser would lose focus when executing menu items like "AddRemove Selected Files..."
- Fix relative time formatting problem where numbers were printed as "2 days (null)" instead of for instance "2 days ago".
- Transform all remaining applicable NSTextView -> LogTableTextView. This completes Eugenes addition of 4e1f49871707
- Fix #140. (add cedit to extensions so we can easily set ui.ignore.)
- Fix amending of files in lower directories when we are amending from a higher directory.
- Include the cedit extension by default to resolve problems with it not being available when we use it.
Version 0.9.9November 16, 2010
- Major revamp of the Commit Sheet.
- Files can now be excluded / re-included from the commit sheet, and visually disabled / enabled.
- An expandable "Advanced Options" section is now accessible on the commit sheet.One can override the user or the date of a commit.
- Introduce the "Amend Option". Although Mercurial does not have a native command for this, MacHg uses Mercurial queues to do the amending of files.(this is the same as the git command.)
- Fix a problem where if you click too quickly on a repository you get kicked back to the welcome screen instead of loading the repository.
- Big internal enhancement to DisclosureBoxController so it shuffles views around better.
- Add tooltip stating that the password will be stored securely in the system keychain.
- Improve performance and avoid threading issues, by internally putting many events inside a delayEventsUntilFinishBlock.
- Fix #110, where the times of commits would appear incorrectly offset by the local time zone.
- Fix issues to do with date parsing.Ensures one gets the correct date when importing patches.
- Make the rollback menu item disabled when there is no rollback information available.
- Make sure the push / pull / incoming / outgoing counts are laid out correctly when resizing the corresponding sheet.
- Fix #86. Previously, a collapse of multiple changesets would result in the historyView's selected indices 'sticking' despite the collapse.Now, after a collapse, the 'lower' revision is selected.
- Make the delete key in the ImportPatches sheet delete a patch from the list of patches we are about to import.
- Fix for #126. Save the overall window size for non-independent window sizes.
- Fix #96 : "Built-in" typo in the Preferences pane.
- Remove unused "count"-string in PullSheet.
- Fix #121. Corrected the documentation to use "Add Server" instead of "Bookmark Server".
- Fix #106. Generate a better name in the rename sheet and fix button layout.
- Include nice addition from Eugene Golushkov to make parent revisions appear as buttons.
- Also from Eugene Golushkov make the NSTextAttachments copy to the clipboard correctly.
- Fix #114. Add a preference item to control if the views have independent window sizes.(Several people had previously asked for this option.)
- Fix #113. Added a rebase option to pull sheet.
- Fix #116 and #108. We can now ignore files with a '#','+', or '*' in them.
- Fix pinning of the "Browse..." button in the local repository sheet.
- Added some underlying support for undo /redo.The backup works perfectly, unfortunately it's just too slow for large repositories like OpenOffice, so I will have to go with some plan B (but leave the functionality in for now...)
- Add some documentation on the Help Generation process.
- Add help topic about empty repositories.(Relates to #134).
- Make building instructions for MacHg a little more prominent.
- Document the simple instructions necessary to change the Mercurial binary used by MacHg in MacHg/CodeOverview.txt
- Use only MacHg's local Mercurial version and remove the preference item UseWhichMercurialBinary.It really makes no sense to allow the specification of a different Mercurial binary and it can only lead to problems.If the user wants to change the Mercurial version inside the MacHg bundle they can easily follow the documented instructions.
- Simplify the include paths presented to the users in the advanced options.Previously it was a bit more general but users were getting confused.Thus Remove preference IncludeMacHgHgrcInHGRCPATH and always havethe ~/Application Support/MacHg/hgrc file included in the HGRC path.
- Make sure that the application support hgrc file contains a valid user name, so if the preferences are switched mid session then things still function correctly.
- By default now include the users ~/.hgrc file in the HGRCPATH.
- Make switching on the editing extensions in checkConfigFileForEditingExtensions check only in the ~/Application Support/MacHg/hgrc configuration file.
- Fix #95. Check for the existence of a ~/.hgignore file on startup.If this file doesn't exist then create it with the contents of DefaultFiles/hgignore.
- Prevent #124 from happening.
- Release version 0.9.9
- Patch contributors for this release (Thank you all!): Eugene Golushkov, Sven Weidauer, Tojek Anselm, Marko Kaning
Version 0.9.8June 26, 2010
- Add a separate MacHg only hgrc configuration file in the directory ~/Application Support/MacHg/hgrc. This allows MacHg to not alter the users ~/.hgrc file.
- Eliminate a place where the LocalMercurial was being additionally copied into the bundled resources. This drops the installed size from 24MB back to 16.6MB
- Simplify the startup checking procedure now that the histedit and collapse extensions are part of the LocalMercurial copy.
- Switch the MacHg icon in the Help to the new icon.
- Add a preference item for allowing the user to use a different version of Mercurial with MacHg. Note, making use of this preference is in general a very bad thing to do—see the Help file entry for details. I am including support for allowing this change since some of the Mercurial developers have requested this. Thus users can now see what the feature would look like. However, I think the feature is just a really bad idea. Thus I will release it like this in 0.9.8 for people to play with but very likely will yank the feature before 1.0.0.
- Add option to include '~/.hgrc' into the HGRCPATH or exclude it from the HGRCPATH.
- Ensure that at least one of ~/.hgrc or ~/Application Support/MacHg/hgrc is in the HGRCPATH.
- Add buttons which open up the ~/.hgrc and the ~/Application Support/MacHg/hgrc files.
- Reorganize the advanced preferences a little.
- Restructure the Help pages and update them.
- Improve date handling. Now MacHg internally gets the single UTC+offset date from Mercurial which speeds data transmission slightly.
- Fix toggling of menu item Show / Hide Toolbar.
- Add toolbar operations for Commit, Revert, Update, Diff, and AddRemove. These are not included in the default toolbar layout, but the user can easily configure the toolbar to have them through the normal way users configure toolbars in Apple applications.
- A very big reorganization of the View hierarchy. Previously the main functionality of the BrowserPane, HistoryPane and DifferencesPane was included in NSViewControllers, but these controllers were not part of the NSResponder chain, so some of the validation and the action targeting was fairly tricky. Thus much of the functionality has been moved into new classes: BrowserView, HistoryView, and DifferencesView. These classes are now part of the NSRepsonder chain. Then all of the menu, toolbar and contextual menu action targets have been reorganized around this. A lot of internal work occurred doing this, but it's the right thing moving forward.
- Make aliases mhg and chg available whenever a terminal is started. mhg is an alias to the version of Mercurial shipped with MacHg. chg is an alias to the version of Mercurial shipped with MacHg expecting that the same environment variables that MacHg uses such as HGPLAIN=1, HGENCODING=UTF-8, etc are included.
- The names mhg and chg are configurable through the preference items LocalHGShellAliasName and LocalWhitelistedHGShellAliasName, although there is no GUI interface for these items.
- Add a picture of an abstract "user" to the initialization wizard.
- Make the menu commands which apply to 'all' files always visible. This fixes some issues which users found confusing.
- Make the main menu differences work in the DifferencesView, and fix the DifferencesView contextual menu.
- Add extended attribute of UTF-8 on the file encoding. This fixes FileMerge Diff's.
- Set it up so that the extended attribute of UTF-8 is only written if it is not already present. This means there are less recreated MacHg status calls due to changing attributes on files.
- Apply Martin Geisler's patch of writing the check exec and check link test to the directory .hg/fschecks instead of the working directory.
- Make MacHg respond to Martin Geisler's patch of writing the check exec and check link test to the directory .hg/fschecks by ignoring any paths FS events on this path.
- Greatly improve the patch export functionality.
- Allow the export of any mixed selection of revisions and not just a continuous range of revisions.
- Patches can now be exported in reverse order so they can be applied as a backout.
- Fix presentation of dates within the patches.
- Default to not trying to 'exact' import a patch.
- Remove switch parent option in export patches sheet.
- By default use git diff option in exporting patches.
- Change sheet button ' "Git" style diffs' -> ' "git" extended diffs'
- Wrap the exporting of patches in a delayEventsUntilFinishBlock so MacHg is not
- constantly doing status refreshing while the patches are written out.
- Improve the export sheet formattedSheetMessage.
- Fix a crasher in exporting patches of revisions whose parents are not the previous ancestor.
- Fix #67. Keep the first responder focus in the same place.
- Occasionally, the document would initially open without displaying any files in the browser view the first time a repository was chosen. Fix this initialization problem where awakeFromNib would be called on the FSBrowser but the myDocument of say the BrowserView would not yet have been set up since the awakeFromNib of the BrowserView hadn't fired yet. Thus ensure that the FSBrowser calls the awakeFromNib of the parent, and further ensure that the parent's awakeFromNib internals will only ever fire once.
- Align popups slightly so it visually looks better.
- Make browse button stick to right side in the clone sheet.
- Fix other issues which came up
Version 0.9.7June 12, 2010
- Fixes #28, #53, #55, #63, #65, #68, #69, #61, as well as other un-numbered issues.
- Important: fix for #28, where ssh would not work correctly in certain cases. This was due to not passing through the SSH_AUTH_SOCK environment variable to Mercurial. MacHg now passes through other environment variables, but still tightly controls which variables it passes.
- Allows the exclusion of paths in the commit sheet. This has been requested a number of times and is now possible in latest version of MacHg. (The commit sheet will further change in the future when hunk level committing inclusion / exclusion is added.)
- Now uses new Mercurial 1.5.4. The version shipped with MacHg is still modified. *However*, Martin Geisler is working on a fix to core Mercurial which would allow me to use the stock native latest version of Mercurial. This will hopefully be done in the next version.
- Makes rebase work correctly by using the --detach option. (Stefano Tortarolo added this in Mercurial 1.5 and it works really nicely.)
- Now uses HGPLAIN and HGENCODING = UTF-8. These are the settings recommended by Martin Geisler.
- Gets rid of HandleCommandDefaults, since using HGPLAIN is now the recommended way moving forward for GUI clients like MacHg. Thus HandleCommandDefaults is no longer relevant since the defaults will always be ignored.
- Uses the information one has for the display of the full message, until such time as one gets the full message. This was a suggestion of David Mitchell and works out to be quite nice.
- Provides more cases of eliminating control interaction stuff off of the main thread.
- Fixes an infinite loop that can crop up during symlink expansion, because the strings have the same values but are not the same pointers.
- Adds an NSDocumentController class so one can control the number of recent items. One needs at least one, independent of any system setting.
- cmd-M now acts to minimize a window like other Macintosh applications.
- Makes a few more changes for compliance to Apple’s HIG (Human Interface Guidelines.)
- Creates servers for all the paths present in the hgrc paths section of a repository when the repository is opened in MacHg.
Version 0.9.6June 2, 2010
- Tidies up the code.
- Updates help pages.
- Follows Apple’s Human Interface Guidelines more closely, e.g. uses option-; instead of ..., change Ok ->OK, etc.
- Uses some new designs for the splash screen, ‘About’ box and the main icon, all of which have been provided by Rick Wong.
- Fixes #47. If the user has set WarnAboutBadMercurialConfiguration to false, then startup warnings are ignored.
- Fixes #48. By default, the first untitled document is now saved as ~/Application Support/MacHg/Repositories.mchg so that the user will not be questioned to save the document.However, the user can open other documents if they so choose, and MacHg will still open the most recently used document.It’s just that if the user wants a single document and wants to use it more like Mail, iCal, or iTunes, which really only have one document each, then they can.See the discussion in the bug report.
- Updates credits.
- Fixes #50.If the stringByResolvingSymlinksAndAliases returns null, i.e. the path is no longer there, then degrading is done gracefully.This issue actually only occurred after the switch to handling symlinks better.
- Fixes #51.
- Upgrades to RegexKitLite 4.0.
Version 0.9.5May 23, 2010
- MacHg now stores any passwords in the system keychain. (A number of changes in this area.) Previous versions stored passwords in cleartext in the MacHg documents. (Passwords have always been transferred in an encrypted form.)
- Has the labels collapsed into the short comment. (I first saw this idea in GitX and liked it.) This gives us more space in general and a lot more space in the Differences View.
- Makes many small fixes and enhancements of a non-critical nature, which I have skipped in these notes.
- Changing the sort order in any view of the history now changes the order in all views.
- You can now also test a server URL in the terminal.
- Fixes a race condition.
- Adds a help link to visit the main web page. Fixes #40.
- Any changes in the preferences to the font size of the browser items are immediately reflected/active.
- Any changes in the preferences to the default column width are immediately reflected/active.
- Fixes #39. Now, when restoring the browser selection, we maintain the current selected path better, even if the exact files specified in the path are no longer present.
- When opening the Differences View, one sees selected in the Base and Compare panes the versions which were the extremes of the range of versions previously selectedin the History View. For example, if the bottom and top versions of the interval of versions selected in the History View were versions 1600 and 2000, then when switching to the Differences View one would see 1600 selected in the Base revision pane and 2000 selected in the Compare revision pane, respectively. This fixes #38.
- The details in the History View now has clickable buttons to review the differences in only specific files.
- Changes ‘patches’ to color the background and not the text.
- Fixes importing patches, and provides changed user messages.
- Several users have commented that they want the buttons on the backing sheet titled "Clone a Repository" and "Create New Repository" to actually do these actions rather than just bringing up the Help About servers and repositories, and how to do things. So now, selecting ‘Clone a Repository’ first pulls up the ‘Create a Server’ reference sheet, and then after that is done, pulls up the clone sheet. Also now, selecting the "Create New Repository" pulls up the add / create local repository sheet.
Version 0.9.4May 15, 2010
- Smaller bug fix version, mainly to allow the use of external diff tools.
- If we add a local repository in any way (through drag 'n' drop or through the sheet dialog) then the corresponding server is now added if it’s known and not present in the document.
- Works around Mercurial’s somewhat inconsistent exit codes and error messages, so we don't have errors when Mercurial issues warnings and we do have errors when Mercurial issues errors.
- Fixes error reporting from the underlying Mercurial executable. E.g., fixes #36.
- Underlying code changes.
- The escape key is now equivalent to ‘Cancel’ for all sheets. Fixes #29.
- Adds the ability to use other diffing tools besides FileMerge.
Version 0.9.3May 13, 2010
- Builds a universal binary (32bit and 64bit Intel) by default. (It turns out that I was shipping a binary which was only 64bit.)
- Adds an option allowing the user to specify the default sort order in the History View.
- Adds a patchName column to the patches importing sheet.
- Makes MacHg work nicely with unicode. (The "LANG" environment variable was previously not set.)
- Adds a warning when the program star...