History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: CIB-1778
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: 3 3
Assignee: jason
Reporter: Rohan McGovern
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Pulse

Support for personal builds with Git

Created: 13/Jan/09 01:24 AM   Updated: 10/Jul/09 06:37 AM
Component/s: None
Affects Version/s: 2.0.19
Fix Version/s: 2.1.4

Original Estimate: Unknown Remaining Estimate: Unknown Time Spent: Unknown
Environment: Linux


 Description  « Hide
Trying a personal build of a git project gives:

"Error: Personal builds are not supported for this SCM (git)"

This feature is highly desirable to us.

 All   Comments   Work Log   Change History      Sort Order:
jason - 13/Jan/09 02:58 AM
Hi Rohan,

Thanks for the request. We are also very interested in evolving our git plugin to cover further capabilities, and hope to work on it during the next few weeks in further 2.0 builds.

jason - 11/May/09 06:57 PM
The good news on this issue is work has already progressed to free up the patch format to allow us to implement personal builds for git using built-in git commands. However, as this work is part of larger personal build updates for Pulse 2.1, this feature will require 2.1.

jason - 09/Jul/09 04:13 PM
Implemented in change 6113. The patch is created by git diff and applied with git apply. We also parse enough of the patch format to show which files were changed (and how) in the Pulse UI. Determining the diff that you want to apply is less obvious than with other SCMs. The approach taken is to pick a default, but also allow you to specify the commit range that we should pass to git diff if you like. So, by default, Pulse tries to figure out what remote branch you are tracking, and what changes you have committed in your local repository since the last pull. This is not going to work in lots of circumstances, but you can also specify what to diff as follows:

pulse personal :
Create a patch for staged changes (git diff --cached)

pulse personal :<commit>
Create a patch for the differences between commit and HEAD (git diff <commit>)

pulse personal :<commit>..<commit>
Create a patch for the differences between two commits (git diff <commit>..<commit>)

You can also specify files after any of the above forms to restrict the diff to those files.

In the future we also plan to support submitting your own patch file, so you can run git diff directly if you need/prefer (of course you don't get the full personal workflow in that case, but you will get some -- such as choosing the revision to build against -- when you submit).

The main caveat at the moment is that changes to the Pulse file for versioned projects will not take effect in the personal build. This requires more rework and/or more internal understanding of the git patch format.

Rohan McGovern - 10/Jul/09 05:19 AM
Any chance of this working for binary files?

jason - 10/Jul/09 06:37 AM
Hi Rohan,

It should work fine for binary files: we pass --binary to git diff and git apply should apply these by default. Our patch parsing understands enough of the binary patch to show the file and type of change.