git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: martin f krafft <madduck@madduck.net>
To: git discussion list <git@vger.kernel.org>
Cc: matled@gmx.net, Johannes.Schindelin@gmx.de
Subject: inconsistent use of worktree? (resend)
Date: Sat, 15 Sep 2007 17:23:03 +0200	[thread overview]
Message-ID: <20070915152303.GA12859@piper.oerlikon.madduck.net> (raw)
In-Reply-To: <20070906134138.GA8548@piper.oerlikon.madduck.net> <20070906132906.GA7791@piper.oerlikon.madduck.net>

[-- Attachment #1: Type: text/plain, Size: 4064 bytes --]

[this message received no replies, I thus resend once with Matthias
and Johannes on Cc, and slightly modified]

Hi there,

I have a $GIT_DIR in ~/.bin/colgit.git, which is bare=false and has
worktree=.. (the parent). This relates back to a suggestion by
Johannes Schindelin [0] for maintaining files like ~/.vimrc and
~/.zshrc in separate repos sharing the same worktree. In short:
while ~/.bin/colgit.git holds all of colgit's objects, refs, and the
index, the repository's files are in ~/.bin (and thus in $PATH).

0. http://marc.info/?l=git&m=118418927823760&w=2

I am trying to figure out a sensible way to work with this, ideally
one which does not require me to set $GIT_DIR (which works):

  GIT_DIR=~/.bin/colgit.git git status
  GIT_DIR=~/.bin/colgit.git git add ...
  GIT_DIR=~/.bin/colgit.git git commit ...
  (or one export GIT_DIR)

but that's a lot of typing and thus error-prone.

I found this to work:

  piper:~/.bin/colgit.git> git status
  # On branch master
  # Changed but not updated:
  #   (use "git add <file>..." to update what will be committed)
  #
  #       modified:   colgit
  #
  no changes added to commit (use "git add" and/or "git commit -a")

  piper:~/.bin/colgit.git> git add ../colgit

  piper:~/.bin/colgit.git> git status
  # On branch master
  # Changes to be committed:
  #   (use "git reset HEAD <file>..." to unstage)
  #
  #       modified:   colgit

and I rejoiced, because that's really pretty cool. But then, trying
to commit, reality hit back:

  piper:~/.bin/colgit.git> git commit -m'initial commit'
  nothing to commit (use "git add file1 file2" to include for commit)

So I had to revert to using GIT_DIR for this:

  piper:~/.bin> GIT_DIR=colgit.git git commit -m'initial commit'
  Created initial commit 008594d: initial commit
   1 files changed, 104 insertions(+), 0 deletions(-)
   create mode 100755 colgit

And then things got really weird, after I accidentally tried the
direct commit (without GIT_DIR) again, following some touchups
I made to the colgit file:

  piper:~/.bin/colgit.git> git commit -m'repairing registration and other touchups'
  Created commit acd86b9: Merge branch 'vimplate'

First, it seems that commits work just fine for changes made only to
files already tracked by git, but not if a commit introduces a new
file.

But second, git-commit does appear to get really confused, since
the commit it claims to have just created is actually not part of
the current repository, but rather the HEAD of the repository in
~/.git (which tracks ~).

git-commit -a also does not work:

  piper:~/.bin/colgit.git> git commit -m'add list action to enumerate all known repos' -a
  error: .bin/colgit: cannot add to the index - missing --add option?
  fatal: Unable to process path .bin/colgit

And finally, git-diff seems to think that I removed the file, rather
than to show differences:

piper:~/.bin/colgit.git> git diff | diffstat                                                    #[334]
 colgit |  138 -----------------------------------------------------------------
 1 file changed, 138 deletions(-)

When in fact:

piper:~/.bin> GIT_DIR=colgit.git git diff | diffstat                                            #[342]
 colgit |    1 +
 1 file changed, 1 insertion(+)

It seems to me that worktree support is still somewhat buggy. Has
anyone experienced similar things? Does anyone have an idea what
this could be about?

I hope to be able to go through the code in the near future but
I first have to learn a lot about git innards, so this could take
a while. Maybe Matthias has a clue? I'd be happy yo test.

-- 
martin;              (greetings from the heart of the sun.)
  \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck
 
"i wish there was a knob on the tv to turn up the intelligence.
 there's a knob called 'brightness', but it doesn't seem to work."
                                                          -- gallagher
 
spamtraps: madduck.bogus@madduck.net

[-- Attachment #2: Digital signature (see http://martin-krafft.net/gpg/) --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

      parent reply	other threads:[~2007-09-15 15:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-06 13:29 inconsistent use of worktree? martin f krafft
2007-09-06 13:41 ` martin f krafft
2007-09-15 15:23 ` martin f krafft [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070915152303.GA12859@piper.oerlikon.madduck.net \
    --to=madduck@madduck.net \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=matled@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).