Today I learn “how to use git-flow” Git flow is a system to maintain git branching efficiently. Love it. However, I like to share my experience.
I like to create a very-very simple plugin and maintain it with git-flow.
First, install git-flow from
https://github.com/nvie/gitflow/wiki/Installation.
Let go to the wp-content/plugins location and make a new directory for the super-simple plugin. Because this plugin just locally exists, yet it is not hosted anywhere, so I init the git with
git init
Then, I initialize git-flow here by the “git flow init” command. This command asks me some questions. Except “Version tag prefix”, all is the default. I choice “v” for “Version tag prefix”.
Then, created a file “init.php” with
<?php /** * Plugin Name: Super Simple Plugin */ // Register Custom Post Type function custom_post_type() { $labels = array( 'name' => _x( 'Post Types', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Post Type', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Post Types', 'text_domain' ), 'name_admin_bar' => __( 'Post Type', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'attributes' => __( 'Item Attributes', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'view_items' => __( 'View Items', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Post Type', 'text_domain' ), 'description' => __( 'Post Type Description', 'text_domain' ), 'labels' => $labels, 'supports' => false, 'taxonomies' => array( ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'post_type', $args ); } add_action( 'init', 'custom_post_type', 0 );
Here, I initialize a super-simple custom post type. Suppose, this is our first initialization. So, add this with
git add . git commit -m "Just Init"
Then, our git-flow comes on the stage. We want to create a new feature, which will remove taxonomies for this post type. So, I start a new feature by
git flow feature start remove-tax
Now, I am in “remove-tax” branch.
To do this feature find and replace
'taxonomies' => array( ),
in post type arguments.
Add and commit git with
git add . git commit -m "tax remove successfully"
Now, this feature is completed. So, I finish this feature by
git flow feature finish
Now, I am on “develop” branch with “new” commit.
Assume, our feature is ready for deployment. Now,
git flow release start 1.0.0
command start new release branch.
At this time, I can change and add anything before release finish. Finally, when release is okay,
git flow release finish
Finally, I can see these git-flow work by hosting on github.com
Create a new repo named “super-simple” and add this with
git remote add origin git@github.com:mrinal013/super-simple.git
and push all things with tags by
git push origin --all --follow-tags