On Fri, Aug 09, 2024 at 08:43:38PM +0200, Thomas Koenig wrote:
> Hi Dimitar,
> 
> > On Fri, Aug 09, 2024 at 08:00:42PM +0200, Thomas Koenig via Gcc wrote:
> > > Hi,
> > > 
> > > I have managed to bring the fortran-unsigned branch into a state where
> > > it can no longer be rebased. When I do a
> > > 
> > > $ git rebase master
> > It's unknown what is the state of your local master branch. So I would
> > advise to rebase against master branch on the server:
> > 
> >   $ git fetch origin
> >   $ git rebase origin/master
> 
> OK, I did that.
> 
> > With the above I get the following result, which looks reasonably ok to
> > me:
> > 
> >   $ git log --oneline --decorate
> >   7bc60bc184f (HEAD) Add merge_bits.
> >   ae4b29f34c9 Min, MAX and ishft(c).
> >   e7a3c1f7841 Add test case for B, Z and O descriptors.
> >   61b3f21a44b Add some rudimentary documentation.
> >   4589ae45088 Implement dshift[lr], ibclr, ibset and ibits.
> >   d1cf578cb2a Add bit_size, btest and bgt plus friends.
> >   b285c13323b Bit functions, HUGE and DIGITS.
> >   c39c316ae8b Added BOZ support to UINT.
> >   95927079ebc Added UINT intrinsic.
> >   70a309048fe Iplement conversions from unsigned to different data types.
> >   c1e596f32f8 Add decimal formatted I/O for unsigneds.
> >   65c571ffe65 A few fixes, add unsigned truncation warning.
> >   b84ec7f0242 Implement decimal list-directed I/O.
> >   f63906c5ff0 Add compile-time version of selected_unsigned_kind.
> >   c8e2ea0c39d Got some basic arithmetic working, test case now run-time.
> >   dd626ce9863 Very first program compiles.
> >   1f93f691ff2 Initial version - add do-nothing -funsigned option and 
> > BT_UNSIGNED.
> >   d0bc1cbf6a8 (origin/trunk, origin/master, origin/HEAD) btf: Protect 
> > BTF_KIND_INFO against invalid kind
> 
> I get the same.
> 
> > 
> > > 
> > > I get
> > > ...
> > > 
> > > warning: skipped previously applied commit a6399bb27b3
> > > hint: use --reapply-cherry-picks to include skipped commits
> > > hint: Disable this message with "git config advice.skippedCherryPicks 
> > > false"
> > 
> > Your origin/devel/fortran_unsigned has manually cherry-picked patches,
> > which meanwhile got merged in "origin/master".  I suspect those
> > cherry-picked patches got sneaked in when a stale base was used for a
> > git rebase (i.e. your local master branch).
> 
> That actually sounds like a reasonable explanation of what could have
> happened.  Of course, it would have been nice to have known that
> beforehand, or maybe even a warning from git...
> 
> > Warnings seem benign to me, but I would use the "gitk" tool to check the
> > rebased branch.  Just in case.
> 
> I've looked at it a bit and seen nothing untoward.
> 
> > 
> > > Successfully rebased and updated refs/heads/fortran_unsigned.
> > > 
> > > and
> > > 
> > > $ git status
> > > On branch fortran_unsigned
> > > Your branch and 'origin/devel/fortran_unsigned' have diverged,
> > > and have 688 and 198 different commits each, respectively.
> > >    (use "git pull" to merge the remote branch into yours)
> > > 
> > > nothing to commit, working tree clean
> > > 
> > > and when I do "git pull" I get a lot of conflicts, basically having
> > > to redo each commit by hand, as a conflict.
> > 
> > If your local branch is tracking origin/devel/fortran_unsigned, then you
> > are attempting to merge pre-rebase history with post-rebase history.
> > In such case conflicts are expected.  Don't pull the remote devel
> > branch.
> 
> Hmm...  but I already did.  And, following other people's advice,
> have reset the branch to upstream already (which may have been
> another mistake).
> 
> So, anything I can do about this, or have I messed up the
> branch beyond repair?

I assume you reset your local branch?  The branch on the server does not
seem to be affected.  I suggest to rebase the remote branch using
another local branch.  Example:

  # Just in case, see which is your old local branch.
  $ git branch

  # Create a new local tracking branch
  $ git checkout -b fortran_unsigned-20240809 origin/devel/fortran_unsigned
  $ git rebase origin/master
  $ gitk -n1000

Once you have verified that local history looks good, you can upload it
to the server.  Notice that you override the history, which is a natural
consequence of the rebase.
  $ git push --force origin HEAD:refs/heads/devel/fortran_unsigned

Regards,
Dimitar
> 
> 
> > To visualise the histories of your local and the remote branch:
> >    $ gitk -n10000 HEAD origin/devel/fortran_unsigned
> 
> Looks like a nice tool.
> 
> Best regards
> 
>       Thomas

Reply via email to