On 04/23/2013 12:24 AM, Chris Evich wrote:
All,
Big thanks to Yu for noticing and alerting us about an unintended
next-fork. Luckily the next HEAD was only two commits ahead, and we
were able to find all the missing commits. Cleber applied all of them
(missing) onto current next HEAD so nothing was lost.
Based on the history of events, it looks like the divergent push came in
from here: https://github.com/autotest/virt-test/pull/307 So we are
guessing ypu might have --force pushed to next by mistake. If so,
_we're_not_mad_, it's an innocent enough mistake (I've done it myself
before).
The only other possibility is "The Green Button" (on pull requests)
caused the trouble. We would really not like this to be the cause, but
we need to be sure. I am hoping Ypu just made this simple mistake-
Ypu, do you remember if you did --force push to next?
Yes. Sorry for that. I just thought the "The Green Button" means the
pullreq is based on the newest next branch, but not just don't have
conflict.
So when I push the #307 from the website I find some commit log without
any code just like:
Merge pull request #307 from ....
which is kind of noise as I though in the repo. So I just remove that
commit log by reset and push this change to next without check. And this
caused the problem that the 7 patches missing.
Check with reset my local tree to the one that before I remove the merge
log. And compare it with the one after remove the merge log. I can
confirm that no more patches is missing.
I am very sorry for making so many troubles for everyone. And thanks for
everyone who help to recover this.
This will never happen again.
---
Unfortunately, this likely means everyone's local next branches are
tracking a dead-HEAD next (ending at
939f5aa06903606b340b088878c1244ab0744ad4).
Instead, the current (fixed) next HEAD contains
06104d14b4e465b8922bdce1ff6e576efdfdb5f3.
This is the reason we really like to avoid --force push to next (unless
it is absolutely necessary to fix some problem).
Fortunately, fixing your next-tracking topic-branches should be pretty
easy, even if you already have made commits on them. Hopefully everyone
is working with topic-branches, explained in
https://www.redhat.com/archives/virt-test-devel/2013-April/msg00190.html
Using my messed up 'example_commit' topic-branch as an example, here's
how I fixed it:
# Download all updates to remote repos.
$ git remote update
Fetching upstream
...
Fetching origin
...
# Remember, my 'upstream' remote points to autotest on github
# and my 'origin' points to my autotest-fork on github...
# Get your local next onto the correct HEAD
# warning: if you made changes to your local next (not recommended)
# this will destroy them!
$ git checkout next
...
$ git reset --hard upstream/next
HEAD is now at ...
# Switch to a broken topic-branch (notice the diverged message):
$ git checkout example_commit
Switched to branch 'example_commit'
Your branch and 'next' have diverged,
and have 1 and 7 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
# Make a note of current (broken) head, in case you need to go back.
$ git log --oneline --no-abbrev-commit -3
cf5971aa69074a0b79a1b9f6cf698fbb9b4418e2 example_commit
939f5aa06903606b340b088878c1244ab0744ad4 Merge pull request #300
bc783c63c11c08b38a619e5f4b19f294b8fa4bdf qemu: Add macvtap support
# Rebase your changes onto current next
$ git rebase next
First, rewinding head to replay your work on top of it...
Applying: ...
# If the rebase doen't work (conflicts) and you can't fix it,
# ask for help. This is where making a note of commit ID (above)
# will come in handy :) You may have to extract your commits as
# patches, then apply them to a fresh next-tracking topic-branch
# one-by-one (not too painful).
# Once fixed, upload the fixed topic-branch to github
# The --force is necessary here since github copy is based on
# the dead-HEAD next and we want to overwrite it.
$ git push --force origin example_commit
...
To [email protected]:cevich/virt-test.git
7c25b2b..8d34460 example_commit -> example_commit
# Now my topic-branch is tracking upstream/next correctly
$ git status
# On branch example_commit
# Your branch is ahead of 'next' by 1 commit.
# (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
If I understand correctly, this will automatically update any/all pull
requests automatically. Though if you do run into any problems you
can't fix, just ask. We're happy to help.
_______________________________________________
Virt-test-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-test-devel