diff --git a/ApplicationController.m b/ApplicationController.m index 3bc6724..add846a 100644 --- a/ApplicationController.m +++ b/ApplicationController.m @@ -16,6 +16,7 @@ #import "PBPrefsWindowController.h" #import "PBNSURLPathUserDefaultsTransfomer.h" #import "PBGitDefaults.h" +#import "Sparkle/SUUpdater.h" @implementation ApplicationController @synthesize cliProxy; @@ -63,6 +64,7 @@ - (void)applicationDidFinishLaunching:(NSNotification*)notification { + [[SUUpdater sharedUpdater] setSendsSystemProfile:YES]; [self registerServices]; // Only try to open a default document if there are no documents open already. diff --git a/Documentation/ReleaseNotes/v0.7.1.txt b/Documentation/ReleaseNotes/v0.7.1.txt new file mode 100644 index 0000000..bb1e363 --- /dev/null +++ b/Documentation/ReleaseNotes/v0.7.1.txt @@ -0,0 +1,12 @@ +v0.7.1 +=== + +This is a maintenance release. The following bugs have been fixed: + +* The Tree View now tries to be smart about displaying binaries (Johannes) +* GitX now correctly tries to require git v1.6.0 or higher (Pieter) +* Amending commits if the author name has UTF-8 multi-byte characters now correctly works (Pieter) +* GitX no longer stalls for large periods when refreshing in the commit view (Johannes, Pieter) +* The history view tries to be less crashy when loading commits + +In addition, the Sparkle framework has been updated so that future updates will be signed diff --git a/GitX.xcodeproj/project.pbxproj b/GitX.xcodeproj/project.pbxproj index 8f8f62c..feb0c77 100644 --- a/GitX.xcodeproj/project.pbxproj +++ b/GitX.xcodeproj/project.pbxproj @@ -131,6 +131,7 @@ F5E92A1B0E88550E00056E75 /* empty_file.png in Resources */ = {isa = PBXBuildFile; fileRef = F5E92A1A0E88550E00056E75 /* empty_file.png */; }; F5E92A230E88569500056E75 /* new_file.png in Resources */ = {isa = PBXBuildFile; fileRef = F5E92A220E88569500056E75 /* new_file.png */; }; F5EF8C8E0E9D4A5D0050906B /* PBWebController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EF8C8D0E9D4A5D0050906B /* PBWebController.m */; }; + F5F7D0651062E7940072C81C /* UpdateKey.pem in Resources */ = {isa = PBXBuildFile; fileRef = F5F7D0641062E7940072C81C /* UpdateKey.pem */; }; F5FC41F40EBCBD4300191D80 /* PBGitXProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FC41F30EBCBD4300191D80 /* PBGitXProtocol.m */; }; F5FC43FE0EBD08EE00191D80 /* PBRefMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FC43FD0EBD08EE00191D80 /* PBRefMenuItem.m */; }; F5FE6C030EB13BC900F30D12 /* PBServicesController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FE6C020EB13BC900F30D12 /* PBServicesController.m */; }; @@ -299,6 +300,7 @@ F5E92A220E88569500056E75 /* new_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = new_file.png; path = Images/new_file.png; sourceTree = ""; }; F5EF8C8C0E9D4A5D0050906B /* PBWebController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBWebController.h; sourceTree = ""; }; F5EF8C8D0E9D4A5D0050906B /* PBWebController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBWebController.m; sourceTree = ""; }; + F5F7D0641062E7940072C81C /* UpdateKey.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = UpdateKey.pem; sourceTree = ""; }; F5FC41F20EBCBD4300191D80 /* PBGitXProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitXProtocol.h; sourceTree = ""; }; F5FC41F30EBCBD4300191D80 /* PBGitXProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitXProtocol.m; sourceTree = ""; }; F5FC43C30EBD050800191D80 /* PBRefContextDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBRefContextDelegate.h; sourceTree = ""; }; @@ -434,6 +436,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + F5F7D0641062E7940072C81C /* UpdateKey.pem */, F50A41130EBB872D00208746 /* Widgets */, 47DBDB920E94F47200671A1E /* Preference Icons */, D26DC6440E782C9000C777B2 /* gitx.icns */, @@ -819,6 +822,7 @@ 47DBDB6A0E94EF6500671A1E /* Preferences.xib in Resources */, 47DBDBB10E94F6CA00671A1E /* Updates.png in Resources */, F569AE930F2CBD7C00C2FFA7 /* Credits.html in Resources */, + F5F7D0651062E7940072C81C /* UpdateKey.pem in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -850,7 +854,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export PATH=$PATH:$HOME/bin:$HOME/local/bin:/sw/bin:/opt/local/bin:`\"$TARGET_BUILD_DIR\"/gitx --git-path`\nVERSION=$(cd \"$PROJECT_DIR\";git describe)\nLONG_VERSION=$(echo $VERSION | sed -e \"s/\\-/\\./\" -e \"s/^v//\" -e \"s/-.*//\")\nSHORT_VERSION=$(echo $VERSION | sed -e \"s/\\-.*//\" -e \"s/^v//\")\n\necho -n \"#define LONG_VERSION $LONG_VERSION\n#define GIT_VERSION $VERSION\n#define SHORT_VERSION $SHORT_VERSION\" > \"$PROJECT_TEMP_DIR/revision\"\ntouch Info.plist"; + shellScript = "export PATH=$PATH:$HOME/bin:$HOME/local/bin:/sw/bin:/opt/local/bin:`\"$TARGET_BUILD_DIR\"/gitx --git-path`\nVERSION=$(cd \"$PROJECT_DIR\";git describe)\nSHORT_VERSION=$(echo $VERSION | sed -e \"s/\\-.*//\" -e \"s/^v//\")\n\necho -n \"#define GIT_VERSION $VERSION\n#define SHORT_VERSION $SHORT_VERSION\" > \"$PROJECT_TEMP_DIR/revision\"\ntouch Info.plist"; }; F5792DFB0EDB570C001B0C31 /* Compile libgit2 */ = { isa = PBXShellScriptBuildPhase; diff --git a/Info.plist b/Info.plist index 8aa62a7..b7a8de4 100644 --- a/Info.plist +++ b/Info.plist @@ -2,6 +2,8 @@ + SUPublicDSAKeyFile + UpdateKey.pem CFBundleDevelopmentRegion English CFBundleName @@ -49,7 +51,7 @@ CFBundleSignature ???? CFBundleVersion - LONG_VERSION + SHORT_VERSION CFBundleGitVersion GIT_VERSION CFBundleShortVersionString diff --git a/PBGitCommitView.xib b/PBGitCommitView.xib index 5b8021f..09804ef 100644 --- a/PBGitCommitView.xib +++ b/PBGitCommitView.xib @@ -8,7 +8,7 @@ 353.00 YES - + @@ -1237,9 +1237,9 @@ YES - + diff --git a/PBGitHistoryController.m b/PBGitHistoryController.m index a9fde36..b4a5d66 100644 --- a/PBGitHistoryController.m +++ b/PBGitHistoryController.m @@ -180,6 +180,13 @@ [self refresh:nil]; } +- (void)viewLoaded +{ + float position = [[NSUserDefaults standardUserDefaults] floatForKey:@"PBGitSplitViewPosition"]; + if (position) + [historySplitView setPosition:position ofDividerAtIndex:0]; +} + - (NSResponder *)firstResponder; { return commitList; @@ -201,6 +208,9 @@ - (void) removeView { + float position = [[[historySplitView subviews] objectAtIndex:0] frame].size.height; + [[NSUserDefaults standardUserDefaults] setFloat:position forKey:@"PBGitSplitViewPosition"]; + [[NSUserDefaults standardUserDefaults] synchronize]; [webView close]; [commitController removeObserver:self forKeyPath:@"selection"]; [treeController removeObserver:self forKeyPath:@"selection"]; diff --git a/PBGitWindowController.m b/PBGitWindowController.m index aba1987..8a338ce 100644 --- a/PBGitWindowController.m +++ b/PBGitWindowController.m @@ -69,28 +69,32 @@ selectedViewIndex = whichViewTag; [[NSUserDefaults standardUserDefaults] setInteger:whichViewTag forKey:@"selectedViewIndex"]; + BOOL justLoaded = NO; switch (whichViewTag) { - case 0: // swap in the "CustomImageViewController - NSImageView" - if (!historyViewController) + case 0: + if (!historyViewController) { historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; - else - [historyViewController updateView]; + justLoaded = YES; + } viewController = historyViewController; break; case 1: - if (!commitViewController) + if (!commitViewController) { commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; - else - [commitViewController updateView]; - + justLoaded = YES; + } viewController = commitViewController; break; } // make sure we automatically resize the controller's view to the current window size [[viewController view] setFrame: [contentView bounds]]; - + if (justLoaded) + [viewController viewLoaded]; + else + [viewController updateView]; + //// embed the current view to our host view [contentView addSubview: [viewController view]]; diff --git a/PBViewController.h b/PBViewController.h index 4715c61..5d70dd2 100644 --- a/PBViewController.h +++ b/PBViewController.h @@ -21,8 +21,20 @@ @property (readonly) NSToolbar *viewToolbar; - (id)initWithRepository:(PBGitRepository *)theRepository superController:(PBGitWindowController *)controller; + +/* removeView is called whenever the view is removed, either to be swapped + * with a different view, or when the repository window will be destroyed + */ - (void) removeView; + +/* Updateview is called every time it is loaded into the main view */ - (void) updateView; + +/* Called after awakeFromNib:, and the view has been loaded into the main view. + * Useful for resizing stuff after everything has been set in the right position + */ +- (void)viewLoaded; + - (NSResponder *)firstResponder; @end diff --git a/PBViewController.m b/PBViewController.m index 510b7a7..4956237 100644 --- a/PBViewController.m +++ b/PBViewController.m @@ -35,14 +35,18 @@ { } -// This is called when the view is displayed again; it -// should be updated to show the most recent information -- (void) updateView -{ -} - - (NSResponder *)firstResponder; { return nil; } + +// The next methods should be implemented in the subclass if necessary +- (void)updateView +{ +} + +- (void)viewLoaded +{ +} + @end diff --git a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h b/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h index d233cd0..7f1ca65 100644 --- a/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h +++ b/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h @@ -12,7 +12,7 @@ @interface SUAppcastItem : NSObject { NSString *title; NSDate *date; - NSString *description; + NSString *itemDescription; NSURL *releaseNotesURL; @@ -33,7 +33,7 @@ - (NSString *)versionString; - (NSString *)displayVersionString; - (NSDate *)date; -- (NSString *)description; +- (NSString *)itemDescription; - (NSURL *)releaseNotesURL; - (NSURL *)fileURL; - (NSString *)DSASignature; diff --git a/Sparkle.framework/Versions/A/Headers/SUUpdater.h b/Sparkle.framework/Versions/A/Headers/SUUpdater.h index b3241a3..e78c4d3 100644 --- a/Sparkle.framework/Versions/A/Headers/SUUpdater.h +++ b/Sparkle.framework/Versions/A/Headers/SUUpdater.h @@ -36,6 +36,12 @@ - (void)setFeedURL:(NSURL *)feedURL; - (NSURL *)feedURL; +- (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; +- (BOOL)sendsSystemProfile; + +- (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; +- (BOOL)automaticallyDownloadsUpdates; + // This IBAction is meant for a main menu item. Hook up any menu item to this action, // and Sparkle will check for updates and report back its findings verbosely. - (IBAction)checkForUpdates:sender; @@ -45,11 +51,14 @@ // update is found, it will be downloaded and prepped for installation. - (void)checkForUpdatesInBackground; +// Date of last update check. Returns null if no check has been performed. +- (NSDate*)lastUpdateCheckDate; + // This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, // (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. - (void)checkForUpdateInformation; -// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. +// Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. - (void)resetUpdateCycle; - (BOOL)updateInProgress; diff --git a/Sparkle.framework/Versions/A/Resources/Info.plist b/Sparkle.framework/Versions/A/Resources/Info.plist index 75f093e..c7f277d 100644 --- a/Sparkle.framework/Versions/A/Resources/Info.plist +++ b/Sparkle.framework/Versions/A/Resources/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.5 Beta 5 + 1.5 Beta 6 CFBundleSignature ???? CFBundleVersion - 282 + 313 diff --git a/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings index 81388b0..b31f928 100644 Binary files a/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib index 778909e..2fb8a83 100644 --- a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib +++ b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib @@ -3,17 +3,17 @@ IBFramework Version - 667 + 670 IBLastKnownRelativeProjectPath ../Sparkle.xcodeproj IBOldestOS 5 IBOpenObjects - 89 + 18 IBSystem Version - 9D34 + 10A96 targetFramework IBCocoaFramework diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib index 5b8f76e..e7e7497 100644 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib and b/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff --git a/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings index ffbdf41..16e0787 100644 Binary files a/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings index 0488303..f83ea23 100644 Binary files a/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings index 6314fee..ea175ae 100644 Binary files a/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings index 43c07b9..5c410d0 100644 Binary files a/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib index 3f09790..d2586ea 100644 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib +++ b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib @@ -7,11 +7,9 @@ IBOldestOS 5 IBOpenObjects - - 6 - + IBSystem Version - 9D34 + 9E17 targetFramework IBCocoaFramework diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib index be38289..c82d358 100644 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib and b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib index 33a6020..d2586ea 100644 --- a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib @@ -9,7 +9,7 @@ IBOpenObjects IBSystem Version - 9D34 + 9E17 targetFramework IBCocoaFramework diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib index ef9b2cd..ac298ce 100644 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib and b/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib differ diff --git a/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings index a1de544..67cf535 100644 Binary files a/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/relaunch b/Sparkle.framework/Versions/A/Resources/relaunch index 6f5372a..e7b96d6 100755 Binary files a/Sparkle.framework/Versions/A/Resources/relaunch and b/Sparkle.framework/Versions/A/Resources/relaunch differ diff --git a/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings index 79140dc..f3ff9d8 100644 Binary files a/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings b/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings index 646559b..b676a4f 100644 Binary files a/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings and b/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings differ diff --git a/Sparkle.framework/Versions/A/Sparkle b/Sparkle.framework/Versions/A/Sparkle index a26791a..2d9bb2a 100755 Binary files a/Sparkle.framework/Versions/A/Sparkle and b/Sparkle.framework/Versions/A/Sparkle differ diff --git a/UpdateKey.pem b/UpdateKey.pem new file mode 100644 index 0000000..bc1591f --- /dev/null +++ b/UpdateKey.pem @@ -0,0 +1,20 @@ +-----BEGIN PUBLIC KEY----- +MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQCHqXl7R4gxSzQbs9Rx2aah2Gv2MbU9 +b32EboHrtPu3Exm3xXlqL9V0OafZjAjnAUOVPa8VprWcF3j/OWk6R6KGLM3ThUUz +4XsqrKZGpHsTYIe+h8+ArTFnzsv2vHsNF2QkesDahE9lNGcgOQNyJy9XoWUJugaD +JXpizG5fBDfVhOHDI8JPpDyHN9TSIgKYvgeKVvaE5sZ3csb7b1rP4gkB3q9c/h80 +ArBeBb5MOe1Iz0aVqidK0fJD66Ah29kvu9yUBkI8gYI/RsODpBS7BDpwZoTHf8TH +TiYhF4fagzleQmda1+eP/FAJcKxmm1NfIBkPKzRaXtWU1jebea2TPMhDAhUAgGen +jSgWMxjKWr9oVtlQqLrL+EMCggEABJHLgZObBVo+85CkJ/Mved+tcePXrWBwvQHE +8k8I5LmjrFsvMauuwjUvRQm5QyHvys7xETaoR25UuqQFLengeMgt9gFRoWkkIpgS +VNDT8z30+HLsO41w0dKIsn6va5yGkD2fXfSzEqx6qMLPEQJ5nLDJoX03gfZeNFxh +9chRGJeo4twc1Or4G3EBurAn7Vr6rfQe21dogWTfAv9j6a22cOQObBc2B4z2S097 +jNtQ7W0DtYf8R+4qST6Jy7006KZdKmQeCJZaz1j24050VGTXi97wt7r7yXS7slZm +o9hr5cXZTiMrREH098pPG36TEA8miVXxqUCJjDsKNMTyEsoNggOCAQUAAoIBAHHO +Dhi58geSZQgzW+GEvPUAqQ0A/EMI5vNT8g3WsBLoMguWfntmoBjwZfwTue0EQyTU +ouUOaiwtdbmz0XWbMOPIwjSOrWb3+nSQ8hc2m62xdFJnbv1JAYOJJKyjISY2+G6+ +tjWpmv8Or07ao/u61ofCPFWEJwCQE9myrUG6ACyte3GRHqGX3A2IY/J7Ncok4S6I +Zlp27z6beY3BYOM9QUwH1J6VmJn0CXH5jpMFsRo/c/b3iFWFZ80AzDnaX7DXPw8d +6BVyMZnw+YVNeam30i/at/Ic4hAxBuabBPMulurGY/c+nTW2QlIOCWDAnCQnJpQH +ZSwhpZtVkisZuNaaK8M= +-----END PUBLIC KEY----- diff --git a/html/views/history/history.js b/html/views/history/history.js index 9b676f6..eda97dd 100644 --- a/html/views/history/history.js +++ b/html/views/history/history.js @@ -251,7 +251,7 @@ var showDiff = function() { p.insertBefore(document.createTextNode(name1 + " -> "), link); } - link.appendChild(document.createTextNode(finalFile)); + link.appendChild(document.createTextNode(finalFile.unEscapeHTML())); button.setAttribute("representedFile", finalFile); link.setAttribute("representedFile", finalFile);