A git plugin for real-world xcode versioning workflow.

Overview

git-xcp

Awesome Stories in Ready

The most simplest, safe, and fully automatic git plugin for versioning workflow of real-world xcode projects. Current working or draft content(unstaged, untracked or uncommitted files) is safe from conflict or loss.

flow

Install

$ git clone https://github.com/metasmile/git-xcp.git && cd git-xcp && sudo make install

Usage

git xcp <command> [option]

commands:
	beta <project target> [option]
						--same-build
						--revert
	submit <project target>
	archive <project target>
	new <project target> <version>

Commands

beta

Push to branch 'release-beta' with automatically increment build number, and create tag.(MyApp/beta/b{CFBundleVersion})

$ git xcp beta MyApp

Performs with same build number

$ git xcp beta MyApp --same-build

Remove already created tags, add a reverse commit.

$ git xcp beta MyApp --revert

submit

Create a tag '{scheme}/submit/{CFBundleShortVersionString}_b{CFBundleVersion}' from the lastest version(HEAD) automatically to manage for additional changes, And deploy as a "release-submit" branch. Maybe you should run this script after succesfully submitted to AppStore review team.

$ git xcp submit MyApp

archive

Squash merge, and push version of release onto 'master' branch via commit '[Release - MyApp - 1.0]', and creates a tag 'MyApp/1.0'"

$ git xcp archive MyApp

new

If your app succesfully released AppStore, Let's start with new CFBundleShortVersionString.

$ git xcp new MyApp 1.1 (from 1.0)

Make your own commands

Also, You can add your new subcommand. 'Makexcp' will automatically wrap general git tasks up. Let's create a source file to following path.

touch ./src/xcp-mycmd

edit 'xcp-mycmd'

# add your scripts here

And then,

$ ./Makexcp mycmd

It creates

./git-xcp-mycmd

And, you can contain it into git-xcp command. Open 'Makefile', and add following lines.

...
install:
	./Makexcp beta
	./Makexcp submit
	./Makexcp archive
	./Makexcp new
    ./Makexcp mycmd <- your command was added.
...

Finally, Install them.

$ make install
You might also like...
Represent and compare versions via semantic versioning (SemVer) in Swift

Version Version is a Swift Library, which enables to represent and compare semantic version numbers. It follows Semantic Versioning 2.0.0. The represe

A protocol-centric, type and queue safe key-value workflow.
A protocol-centric, type and queue safe key-value workflow.

Light-weight, strict protocol-first styled PropertyKit helps you to easily and safely handle guaranteed values, keys or types on various situations of

Alfred Workflow to be used with Wooshy, that brings any macOS windows to the foreground

Wooshy: Window to the Foreground! Switch apps with Alfred. Switch app windows with Wooshy: Window to the Foreground! ScreenFlow.mp4 Why Aren't you ann

LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.
LinkedLog is a Xcode plugin that includes a Xcode PCH header file template that adds the macros `LLog` and `LLogF` and parses their output to link from the console to the corresponding file and line.

LinkedLog Xcode Plugin LinkedLog is a Xcode plugin that includes a Xcode PCH file template that adds the macros LLog and LLogF. The LLog macro will wo

Xcode plugin that brings ⇧⌘T from AppCode over to Xcode

Aviator An Xcode Plugin that brings ⇧⌘T over to Xcode This minimal plugin allows you to use the key combo ⇧⌘T to toggle between source and test files.

This Xcode plugin shows Xcode app version in the Dock and App Switcher icon
This Xcode plugin shows Xcode app version in the Dock and App Switcher icon

Xcode Icon Version Tired of this Xcode icon always showing multiple times in your App Switch with no help watshoever as to which version you are curre

macOS status bar app to automatically fetch Git repositories.

Fetcher About macOS status bar app to automatically fetch Git repositories. License Project is released under the terms of the MIT License. Repository

Ejercicio de git
Ejercicio de git

testdam Ejercicio git Creo un nuevo repositorio GitHub Invito al compañero al repositorio También entro yo al repositorio que ha creado el compañero d

Git Submodule Alternative for Cocoa.

CocoaSeeds Git Submodule Alternative for Cocoa. Inspired by CocoaPods. Why? iOS 7 projects do not support the use of Swift libraries from CocoaPods or

Awesome-gitignore-templates - A curated collection of useful gitignore templates for different programming languages while pushing your code to git. 😊 📝

Awesome Gitignore Templates A curated collection of useful gitignore templates for different programming languages while pushing your code to git. 😊

The Git interface you've been missing all your life has finally arrived.
The Git interface you've been missing all your life has finally arrived.

GitUp Work quickly, safely, and without headaches. The Git interface you've been missing all your life has finally arrived. Git recently celebrated it

A command launcher designed for git users!
A command launcher designed for git users!

Bosswift - A command launcher for git users Bosswift work along with git worktree to give you power everyday. System Requirement: macOS 11.0+ A troubl

A Version Control Kit that allows Aurora Editor to do everything git related.
A Version Control Kit that allows Aurora Editor to do everything git related.

Version Control Kit AuroraEditor Version Control Kit allows us to perform actions like commiting, pulling, pushing and fetching history of whole files

Plugin-spell-timer - Spell Timer Plugin for Outlander

Spell Timer Plugin for Outlander This plugin provides variables for spells from

Cordova-plugin-saveimage - This plugin helps you save images

cordova-plugin-saveimage This plugin helps you save images on iOS/Android Instal

Swift-lint-plugin - A SwiftPM plugin that adds a linting command

SwiftLintPlugin This is a SwiftPM plugin that adds a lint command. SwiftPM plugi

SwiftLint Plugin for Xcode.
SwiftLint Plugin for Xcode.

SwiftLint Xcode Plugin Demo Usage Set SwiftLint Path default: Default path is /usr/local/bin/swiftlint relative: Relative path with the current projec

An Xcode Plugin to convert Objective-C to Swift
An Xcode Plugin to convert Objective-C to Swift

XCSwiftr Convert Objective-C code into Swift from within Xcode. This plugin uses the Java applet of objc2swift to do the conversion. Noticed that the

Nef-plugin - 🔌 an Xcode extension to use nef features easily
Nef-plugin - 🔌 an Xcode extension to use nef features easily

This project provides an extension for Xcode to integrate some nef features directly in the IDE. Using the core of nef, you can export snippets from y

Comments
  • Extension Support

    Extension Support

    If app project contains some extensions, (Especially iMessage Extensions) its build version must be same as parent app. (git xcp beta)

    /usr/bin/xcrun xcodebuild -showBuildSettings -scheme Project | grep TARGET_NAME

    opened by metasmile 0
  • git xcp archive : commit of release can't add when any changes are not found in master branch.

    git xcp archive : commit of release can't add when any changes are not found in master branch.

    Should fix when output following msg :

    Squash commit -- not updating HEAD
    Automatic merge went well; stopped before committing as requested
    

    In this case, no more additional commits has not been added when any changes are not found in current working tree (in this case, master). So then, handle like this:

    git commit --allow-empty -m '[Release {TARGET}/{VERSION}]'
    
    bug ready 
    opened by metasmile 0
  • homebrew support (current audit problems)

    homebrew support (current audit problems)

    ==> audit problems git-xcp:

    • [x] bottle modifier (line 13) should be put before depends_on (line 12)
    • [x] Stable: version 0.1.1 is redundant with version scanned from URL
    • [ ] GitHub repository not notable enough (<20 forks, <20 watchers and <50 stars)
    • [ ] GitHub repository too new (<30 days old)
    • [x] Please remove default template comments
    • [x] Please remove default template comments
    • [x] Please remove default template comments
    opened by metasmile 0
Releases(0.1)
Owner
gitmerge
gitmerge
Automatically build and rebuild Xcode image catalogs for app icons, universal images, and more

Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more.

Dotan J. Nahum 822 Dec 21, 2022
Xcode storyboards diff and merge tool.

StoryboardMerge Storyboard diff and merge tool which: compares and merges two storyboard files, provides an automatic merge-facility, The storyboardin

null 238 Sep 12, 2022
Xcode .appiconset generator for Adobe Illustrator.

Creating AppIcon sets from Adobe Illustrator This repo is rewrited from original repo https://github.com/CaryChamplin/CreatingIconsFromAI. Just genera

gitmerge 73 Nov 9, 2020
Script to support easily using Xcode Asset Catalog in Swift.

Misen Misen is a script to support using Xcode Asset Catalog in Swift. Features Misen scans sub-directories in the specified Asset Catalog and creates

Kazunobu Tasaka 123 Jun 29, 2022
An Xcode plug-in to format your code using SwiftLint.

SwiftLintXcode An Xcode plug-in to format your code using SwiftLint. Runs swiftlint autocorrect --path CURRENT_FILE before *.swift file is saved. IMPO

Yuya Tanaka 348 Sep 18, 2022
Xcode-compatible build tool.

xcbuild xcbuild is an Xcode-compatible build tool with the goal of providing faster builds, better documentation of the build process and running on m

Meta Archive 2k Dec 11, 2022
An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode's Issue Navigator giving them project-wide visibility.

XcodeIssueGenerator An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode

Wunderman Thompson Apps 143 Oct 11, 2022
This repository contains rules for Bazel that can be used to generate Xcode projects

rules_xcodeproj This repository contains rules for Bazel that can be used to generate Xcode projects. If you run into any problems with these rules, p

BuildBuddy 233 Dec 28, 2022
Swift Package Manager plugin which runs ActionBuilder to create a Github Actions workflow for a swift package.

ActionBuilderPlugin A Swift Package Manager command which builds a Github Actions workflow for the current package. By default the workflow file will

Elegant Chaos 4 Jul 20, 2022
Xcode-streamdeck-plugin - A Stream Deck plugin for Xcode

Stream Deck Xcode Plugin This repository contains a Stream Deck plugin to add so

Daniel Kennett 77 Dec 27, 2022