"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Christian Weisgerber <naddy@mips.inka.de>
Subject:
checkout -E and existing files
To:
gameoftrees@openbsd.org
Date:
Fri, 15 Sep 2023 22:14:19 +0200

Download raw body.

Thread
The man page says this about got checkout -E: "Existing files will
be left intact."  That's not very clear.

Let's try it...

  $ cvs -Rd /cvs co xenocara
  cvs checkout: Updating xenocara
  U xenocara/.gitignore
  U xenocara/3RDPARTY
  ...
  U xenocara/xserver/xkb/xkbtext.c
  U xenocara/xserver/xkb/xkmread.c
  $ find xenocara -name CVS -exec rm -rf {} +

Now we have a tree of files that also exist in the Git repository.
Let's run checkout -E on top of that:

  $ got co -E ~/xenocara.git
  ?  /home/naddy/tmp/xenocara/.gitignore
  ?  /home/naddy/tmp/xenocara/3RDPARTY
  ...
  ?  /home/naddy/tmp/xenocara/xserver/xserver.ent.in
  ?  /home/naddy/tmp/xenocara/xserver/ylwrap
  Checked out refs/heads/master: 50e9bfdb057f451ff1b595308922372d3ba9b0ed
  Now shut up and hack

Do the question marks mean that got treats those files as unversioned?

  $ cd xenocara
  $ got st
  $

Obviously not.
Are they under version control at all?

  $ sed -i '1s/^/#/' Makefile
  $ got st
  M  Makefile
  $ got rv Makefile^
  R  Makefile

Yes, they are.

Great.  Wait, got status says there are no differences to what's
in the repository.  Except there are.  The CVS and Git repos are
not in sync.  Some files _are_ different, but got seems unaware.
That's not so great.

Presumably got will eventually notice once the files that are
different are actually changed by some operation.

I'm not sure what I was expecting, but the existing behavior seems ...
not useful?

-- 
Christian "naddy" Weisgerber                          naddy@mips.inka.de