Nuke GIT Repository History

Suppose you’ve just commited a private API key that should not be public. Or maybe you just wanna restart your repository, because you’ve just finished major surgery and wanna start fresh.

If you’d like to delete all GIT history, you’d need to:

1. Remove all history

[cc]rm -rf .git[/cc]

2. Reconstruct the Git repo with only the current content

[cc]git init
git add .
git commit -m “Initial commit”[/cc]

3. Push to GitHub.

[cc]git remote add origin
git push -u –force origin master[/cc]

Source here.

Fixing ‘”A newer version of this app is already installed on this computer” Alert

I’ve just got a nice alert, while trying to install a Mac App from the AppStore, saying the following:

"A newer version of this app is already installed on this computer."

Solutions?

  1. Nuke the app’s Xcode build folder.

    Location: ~/Library/Developer/Xcode/DerivedData/

  2. Execute the following command:

    /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user

Now you should be good to go!

Sparkle in Sandbox Mode

If you’re trying to distribute updates for your OSX app, outside the AppStore, still, with the AppSandbox enabled, you’ve come to the right place.

In the official Sparkle repository, you can find this pull request. Since it hasn’t been updated in a while, and the settings were fixed for OSX Lion, i’ve just forked the pull request, and pushed a couple fixes here.

Allright, so, how should you proceed?

  1. Clone the repository!
  2. Open the Build Phases of your target and…
    1. Add Sparkle.framework as a dependency
    2. Link Sparkle.framework library
    3. Copy Sparkle.framework to ‘Frameworks’
  3. If you’ve done things right, your ‘Build Phases’ tab should look something like this:

    OSX Sparkle Sandboxed

  4. Add a ‘Run Script‘ phase with the following snippet:

     

LOCATION=”${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}”
IDENTITY=”Developer ID Application: [INSERT YOUR IDENTITY NAME HERE]”
find “$LOCATION” -name ‘*.framework’ -exec codesign –verbose –force –sign “$IDENTITY” {}/Versions/Current \;
codesign –verbose –force –sign “$IDENTITY” “$LOCATION/../XPCServices/com.andymatuschak.Sparkle.SandboxService.xpc”

 

That’s it. After hitting ‘Archive’, your app should be able to auto-update itself.

References:
Codesign in Mavericks and Xcode 5 (Stackoverflow)
Codesign in Mavericks and Xcode 5 (Hockeyapp)
Sparkle (Thanks Andy, for sharing such an awesome project)