Re: A question about using 'add -p' to split the patch
On Mon, Jun 15, 2009 at 02:24:39PM +0800, Ping Yin wrote:
Show 49 quoted lines
> On Mon, Jun 15, 2009 at 2:12 PM, David Aguilar<davvid@gmail.com> wrote:
> > On Mon, Jun 15, 2009 at 11:08:51AM +0800, Ping Yin wrote:
> >> file bt.php in the HEAD:
> >>
> >> function bt_add($path) {
> >> return;
> >> }
> >>
> >> file bt.php in the working directory:
> >>
> >> function bt_move($path, $pos) {
> >> return;
> >> }
> >> function bt_add($path, $pos) {
> >> bt_move($path, $pos)
> >> return;
> >> }
> >>
> >> Now i want to split the change into two parts:
> >> First introduce bt_move
> >> Then add a param pos to bt_add and call bt_move
> >>
> >> With the 'e' action of 'add -p', i got
> >>
> >> -function bt_add($path) {
> >> +function bt_move($path, $pos) {
> >> + return;
> >> +}
> >> +function bt_add($path, $pos) {
> >> + bt_move($path, $pos)
> >> return;
> >> }
> >>
> >> Then, i want to edit the patch to get
> >>
> >>
> >> function bt_move($path, $pos) {
> >> return;
> >> }
> >> function bt_add($path) {
> >> return;
> >> }
> >>
> >> However, whatever i do, the patch fails to apply. Any suggestion?
> >
> > Use git-gui or git-cola to select just bt_move() for addition.
> > You can stage specific lines.
>
> Doesn't the 'e' action of 'add -p' do the same job with git-gui?It should.
I tried it in git-{cola,gui} and I was able to do it by first staging the +bt_add(a,b) line, and then staging only the -bt_add(a) line.
For add -e I got it to work by editing the patch to;
+function bt_move($path, $pos) {
+ return;
+}
function bt_add($path) {
return;
}The reason it's hard to get right is that you have to reconstruct the context of the original content for the adds/removes and remember to add the space before the reconstructed bt_add($path).
Those kinda details are usually easier for software to get right ;-)
--
David