threads / discuss / 12999

How do I set the committer with cherry-pick? (or is there a better way to get changes from someone?)

Subject: How do I set the committer with cherry-pick? (or is there a better way to get changes from someone?)

## tl;dr

4 messages between Apr 5, 2008 and Apr 6, 2008.

replies: 3people: 2as markdown or json

Pat Maddox· Apr 5, 2008, 23:42 UTC · lore

I'm helping to maintain a project, so people send me requests to pull from their repos. So I create a branch and then pull their stuff in, taking a look at the various different commits. I write the commit numbers that I want to cherry pick to a file (also is there a better way of handling this? it's a bit tedious. it'd be nice to mark certain commits for cherry picking and then suck them all in later). Then when I've gone through all the new commits and chosen the ones I want, I check out the master branch and cherry-pick those commits in.

At this point the commits are in the repo, but they only have author information. I'd like to specify that I'm the one who committed this change now. How can I do that?

And finally, is this a good way to incorporate changes from other devs? Is there a better way?

Pat
Junio C Hamano· Apr 6, 2008, 00:05 UTC · re: Pat Maddox · lore

Re: How do I set the committer with cherry-pick? (or is there a better way to get changes from someone?)

"Pat Maddox" <pergesu@gmail.com> writes:
> At this point the commits are in the repo, but they only have author
> information.  I'd like to specify that I'm the one who committed this
> change now.  How can I do that?

You've already done that. They are not what you _wrote_ so your name won't be on "Author:" lines, but you made into commits in the final history, and your name would appear on "Committer:" lines.

Try "log --pretty=fuller".
> And finally, is this a good way to incorporate changes from other
> devs?  Is there a better way?

A _better way_, especially because you are already pulling from them, would be just "pull", without having to cherry-pick to clean-up the history.

The reason you are being forced to cherry-pick is probably _their_ histories you pulled are suboptimal and full of garbage commit, containing irrelevant changes you do not want to include in the mainline you maintain. Have _THEM_ clean their act and prepare clean history that consists only of relevant commits. Shift as much burden as possible to the contributors; otherwise the central integrator will become the bottleneck in the process.

Pat Maddox· Apr 6, 2008, 00:58 UTC · re: Junio C Hamano · lore

Re: How do I set the committer with cherry-pick? (or is there a better way to get changes from someone?)

On Sat, Apr 5, 2008 at 5:05 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 11 quoted lines
> "Pat Maddox" <pergesu@gmail.com> writes:
>
>  > At this point the commits are in the repo, but they only have author
>  > information.  I'd like to specify that I'm the one who committed this
>  > change now.  How can I do that?
>
>  You've already done that.  They are not what you _wrote_ so your name
>  won't be on "Author:" lines, but you made into commits in the final
>  history, and your name would appear on "Committer:" lines.
>
>  Try "log --pretty=fuller".
Ah, okay.  I see.  Thanks.
Show 14 quoted lines
>  > And finally, is this a good way to incorporate changes from other
>  > devs?  Is there a better way?
>
>  A _better way_, especially because you are already pulling from them,
>  would be just "pull", without having to cherry-pick to clean-up the
>  history.
>
>  The reason you are being forced to cherry-pick is probably _their_
>  histories you pulled are suboptimal and full of garbage commit, containing
>  irrelevant changes you do not want to include in the mainline you
>  maintain.  Have _THEM_ clean their act and prepare clean history that
>  consists only of relevant commits.  Shift as much burden as possible to
>  the contributors; otherwise the central integrator will become the
>  bottleneck in the process.

That makes sense. So let's say somebody made some changes of their own that I don't want in the repository. Would the best thing for them to do be to create a new branch off of my main line, and then cherry-pick their commits in themself. Then they send me the url along with the branch, so that when I pull from them it's only the new commits applied to the main line.

And finally, when I experimented with doing a pull instead of cherry-pick, it listed the original author as the committer instead of myself. I think you're absolutely right that the burden should be on them, so I can tell them to create a clean commit branch and just pull from it, but I still need to be listed as the committer.

Pat
Junio C Hamano· Apr 6, 2008, 01:18 UTC · re: Pat Maddox · lore

Re: How do I set the committer with cherry-pick? (or is there a better way to get changes from someone?)

"Pat Maddox" <pergesu@gmail.com> writes:
Show 5 quoted lines
> And finally, when I experimented with doing a pull instead of
> cherry-pick, it listed the original author as the committer instead of
> myself.  I think you're absolutely right that the burden should be on
> them, so I can tell them to create a clean commit branch and just pull
> from it, but I still need to be listed as the committer.

Well, at that point, you are not the committer for their changes on their clean history, and you shouldn't expect to be recorded as such. Your contribution to the project might still be recorded as the committer of the merge commit that pulled their contributions in, though.

Any history is just as valid as your integration branch's history. There may be hundreds of potential histories in the universe --- each and every contributor, anybody who clones and plays with the project may create his own history. Each contributor in their repository will be commiting their changes and building their histories. If one of these alternative histories is so agreeable for you that makes you happy to pull from it, that means the creator of that history did extra work to keep it clean (or rebuilt it to look like clean). Give the contributor the credit for his own segment of the history when you merge from him.

Among these many alternate histories, yours may happen to be the one many people consider more authoritative than others', but other than that, you are not any more special than them.

That's what distributed means.

← back to recent threads