Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Apr 2021 13:20:06 -0700
From:      Cy Schubert <Cy.Schubert@cschubert.com>
To:        Michael Gmelin <grembo@freebsd.org>
Cc:        Cy Schubert <Cy.Schubert@cschubert.com>, src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   Re: git: a0358e3d5184 - main - Synch index of contrib/bc with what  is in workdir after cloning.
Message-ID:  <202104292020.13TKK6a4010861@slippy.cwsent.com>
In-Reply-To: <20210429200740.5e8bfe5a@bsd64.grem.de>
References:  <202104291234.13TCYk5K092776@gitrepo.freebsd.org>  <202104291353.13TDrIg3026309@slippy.cwsent.com> <20210429162959.16662d66@bsd64.grem.de> <202104291455.13TEtxEg040285@slippy.cwsent.com> <20210429172122.1751663f@bsd64.grem.de> <202104291730.13THUOv6006096@slippy.cwsent.com> <20210429200740.5e8bfe5a@bsd64.grem.de>

next in thread | previous in thread | raw e-mail | index | archive | help
In message <20210429200740.5e8bfe5a@bsd64.grem.de>, Michael Gmelin writes:
> 
>
> On Thu, 29 Apr 2021 10:30:24 -0700
> Cy Schubert <Cy.Schubert@cschubert.com> wrote:
>
> > Going back in time through each daily snapshot, my April 26 0230U
> > snapshot first exhibited the problem.
>
> Yes, like I wrote, the problem was introduced in 8ea9013512 (which was
> on April 26th).
>
> If you take your snapshot from - let's say - April 27th, you can also
> easily demonstrate the problem by doing:
>
>   cp -a /usr/src /usr/srccopy
>   cd /usr/src/srccopy
>   git status

No luck with this.

>
> Or by doing:
>
>   cd /usr/src
>   rm .git/index
>   git reset
>   git status

No luck with this either:

slippy$ pwd
/x/test/29
slippy$ rm .git/index 
slippy$ git reset
Unstaged changes after reset:
M	contrib/bc/bc.vcxproj
M	contrib/bc/bc.vcxproj.filters
M	contrib/bc/bcl.vcxproj
M	contrib/bc/bcl.vcxproj.filters
M	etc/mtree/BSD.var.dist
M	sys/dev/bge/if_bge.c
M	sys/dev/bge/if_bgereg.h
M	sys/geom/geom.h
M	sys/geom/geom_int.h
M	sys/geom/geom_kern.c
M	sys/geom/geom_subr.c

It took 404.90 seconds to enumerate unstaged changes after reset.  You can
use '--quiet' to avoid this.  Set the config setting reset.quiet to true
to make this the default.
slippy$ git st
Refresh index: 100% (86556/86556), done.
On branch komquats
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   contrib/bc/bc.vcxproj
	modified:   contrib/bc/bc.vcxproj.filters
	modified:   contrib/bc/bcl.vcxproj
	modified:   contrib/bc/bcl.vcxproj.filters
	modified:   etc/mtree/BSD.var.dist
	modified:   sys/dev/bge/if_bge.c
	modified:   sys/dev/bge/if_bgereg.h
	modified:   sys/geom/geom.h
	modified:   sys/geom/geom_int.h
	modified:   sys/geom/geom_kern.c
	modified:   sys/geom/geom_subr.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
slippy$ git stash push -m foobar
Saved working directory and index state On komquats: foobar
slippy$ git st
On branch komquats
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   contrib/bc/bc.vcxproj
	modified:   contrib/bc/bc.vcxproj.filters
	modified:   contrib/bc/bcl.vcxproj
	modified:   contrib/bc/bcl.vcxproj.filters

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
slippy$ 


>
> or by doing:
>
>   cd /usr/src
>   touch contrib/bc/*vcx*
>   git status

Same slippy$ touch contrib/bc/*vcx*
You have new mail.                                                          

slippy$ git st
On branch komquats
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   contrib/bc/bc.vcxproj
	modified:   contrib/bc/bc.vcxproj.filters
	modified:   contrib/bc/bcl.vcxproj
	modified:   contrib/bc/bcl.vcxproj.filters

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
slippy$ 

Next I tried committing the following to the branch:

slippy$ git br                        
* komquats
  main
slippy$ git ci contrib/bc/bc.vcxproj contrib/bc/bc.vcxproj.filters 
contrib/bc/bcl.vcxproj contrib/bc/bcl.vcxproj.filters
hint: Waiting for your editor to close the file... 
Foobar.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch komquats
# Changes to be committed:
#       modified:   contrib/bc/bc.vcxproj
#       modified:   contrib/bc/bc.vcxproj.filters
#       modified:   contrib/bc/bcl.vcxproj
#       modified:   contrib/bc/bcl.vcxproj.filters
#
# Untracked files:
#       sys/i386/conf/IPFILTER
#       usr.sbin/ufdformat/
#
~
~
~
~
~
~
~
~
/x/test/29/.git/COMMIT_EDITMSG: 15 lines, 425 characters
[komquats 1155c1951d3c] Foobar.
 4 files changed, 713 insertions(+), 713 deletions(-)
slippy$ git co main
Switched to branch 'main'
Your branch is up to date with 'freebsd/main'.
slippy$ git co komquats
error: Your local changes to the following files would be overwritten by 
checkout:
	contrib/bc/bc.vcxproj
	contrib/bc/bc.vcxproj.filters
	contrib/bc/bcl.vcxproj
	contrib/bc/bcl.vcxproj.filters
Please commit your changes or stash them before you switch branches.
Aborting
slippy$ git st
On branch main
Your branch is up to date with 'freebsd/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   contrib/bc/bc.vcxproj
	modified:   contrib/bc/bc.vcxproj.filters
	modified:   contrib/bc/bcl.vcxproj
	modified:   contrib/bc/bcl.vcxproj.filters

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
slippy$ 

The only solution is to rm the files, checkout main, blow away the branch 
and recreate it. And that, only before checking out main or main itself 
hosed. I already did this, the following this morning. This is more an 
academic exercise on my part:

Rollback snapshot.
slippy$ git br
* komquats
  main
slippy$ git stash push -m my-work
Saved working directory and index state On komquats: my-work
slippy$ git st
On branch komquats
Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

nothing added to commit but untracked files present (use "git add" to track)
slippy$ git co main
Switched to branch 'main'
Your branch is up to date with 'freebsd/main'.
slippy$ git st
On branch main
Your branch is up to date with 'freebsd/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

nothing added to commit but untracked files present (use "git add" to track)
slippy$ git pull -r --all
Fetching freebsd
remote: Enumerating objects: 35, done.
remote: Counting objects: 100% (35/35), done.
remote: Total 144 (delta 34), reused 34 (delta 34), pack-reused 109
Receiving objects: 100% (144/144), 99.01 KiB | 355.00 KiB/s, done.
Resolving deltas: 100% (86/86), completed with 19 local objects.
>From https://git.freebsd.org/src
   a4b5f7ba3e9b..420d30f5bdbf  main       -> freebsd/main
   1a34afa9541e..aa4eb2089751  stable/13  -> freebsd/stable/13
Updating a4b5f7ba3e9b..420d30f5bdbf
Fast-forward
 contrib/bc/bc.vcxproj          | 554 ++++++++++++++++++++------------------
---
 contrib/bc/bc.vcxproj.filters  | 362 +++++++++++++--------------
 contrib/bc/bcl.vcxproj         | 320 ++++++++++++------------
 contrib/bc/bcl.vcxproj.filters | 190 +++++++-------
 release/arm/armv7.conf         |   8 +
 share/man/man9/kasan.9         |  22 +-
 share/mk/src.libnames.mk       |   3 -
 sys/amd64/amd64/pmap.c         |   2 +-
 sys/dev/ipmi/ipmi_isa.c        |   4 +
 sys/dev/ipmi/ipmi_pci.c        |   4 +
 sys/dev/ipmi/ipmi_smbios.c     |  19 +-
 sys/dev/ipmi/ipmi_smbus.c      |   4 +
 sys/kern/subr_asan.c           |  10 +-
 sys/netpfil/pf/pf_nv.c         |   8 +-
 sys/sys/asan.h                 |   2 +-
 15 files changed, 776 insertions(+), 736 deletions(-)
 create mode 100644 release/arm/armv7.conf
slippy$ git co komquats
Switched to branch 'komquats'
slippy$ git rebase main
error: cannot rebase: You have unstaged changes.
error: Please commit or stash them.
slippy$ git st
On branch komquats
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   contrib/bc/bc.vcxproj
	modified:   contrib/bc/bc.vcxproj.filters
	modified:   contrib/bc/bcl.vcxproj
	modified:   contrib/bc/bcl.vcxproj.filters

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
slippy$ rm contrib/bc/bc.vcxproj contrib/bc/bc.vcxproj.filters 
contrib/bc/bcl.vcxproj contrib/bc/bcl.vcxproj.filters
slippy$ git co main
Switched to branch 'main'
Your branch is up to date with 'freebsd/main'.
slippy$ git st
On branch main
Your branch is up to date with 'freebsd/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

nothing added to commit but untracked files present (use "git add" to track)
slippy$ git br -d komquats
Deleted branch komquats (was 41ce0e34ea42).
slippy$ git co -b komquats
Switched to a new branch 'komquats'
slippy$ git stash pop
On branch komquats
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   etc/mtree/BSD.var.dist
	modified:   sys/dev/bge/if_bge.c
	modified:   sys/dev/bge/if_bgereg.h
	modified:   sys/geom/geom.h
	modified:   sys/geom/geom_int.h
	modified:   sys/geom/geom_kern.c
	modified:   sys/geom/geom_subr.c

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	sys/i386/conf/IPFILTER
	usr.sbin/ufdformat/

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (33071593e430eeaa3782d582534c057c968776f6)
slippy$ 

I didn't have any committed work in this branch so recreating the branch 
from scratch was painless.

>
> > 
> > My remediation efforts are below:
> > 
> >> ...
> > slippy$             
> > 
> > 
> > There is no way to move forward except to rm (not git rm but UNIX rm)
> > the files. Checkout another branch and blow away the affected branch.
> > With the files physically deleted with rm(1) I could switch branches
> > and blow away the affected branch. Without this extreme I can't even
> > switch branches.
>
> AFAIK there are two options forward:
>
> 1. Simply add the files that are shown as changed on your local branch
>    (that's all my commit did, "git commit -a").
> 2. Temporarily do:
>    echo "contrib/bc/bc*.vcx* -text" >>.git/info/attributes

Neither of those worked for me. Again this is purely academic now but 
looking to understand this should it happen again, with committed work.

>
> > 
> > Lucky for me this branch was a placeholder maintaining a record of
> > what was installed on my laptop vs main, so it's easy to blow away
> > and recreate. But for people with committed changes to a branch this
> > would be a huge problem.
>
> The two things above should work.
>
> > 
> > My other branches which I rebase much less frequently were unaffected.
> > 
> > 
>
> AFAIK this only affects branches which happen to contain changes
> since 8ea9013512.
>
> If not, I'm afraid some breaking repo-surgery would be required, going
> back before 8ea9013512 (just doing a revert patch won't accomplish
> anything different).

I've saved the entire zfs filesystem tree in a zfs-send stream for more 
experimentation later. Hopefully my notes above are of some value to 
someone.


-- 
Cheers,
Cy Schubert <Cy.Schubert@cschubert.com>
FreeBSD UNIX:  <cy@FreeBSD.org>   Web:  https://FreeBSD.org
NTP:           <cy@nwtime.org>    Web:  https://nwtime.org

	The need of the many outweighs the greed of the few.





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202104292020.13TKK6a4010861>