From: Jon Loeliger <jdl@freescale.com>
To: git@vger.kernel.org
Subject: Trying to Update All Heads of a Repository
Date: Thu, 03 Nov 2005 18:23:59 -0600 [thread overview]
Message-ID: <E1EXpN9-00034x-7g@jdl.com> (raw)
Guys and Gals,
*sigh*
This is the sort of thing that mystifies me still.
I think there is (should be?) an easy command and
I just missed that day in class. Feel free to
smack me with the obvious as needed...
I re-cloned (rsync) by git.git tree yesteday.
Today is a new day, and I want to start with
a fresh update of the entire git.git tree.
I have not changed anything in my copy yet.
My goal is a simple update of the entire repository.
% git --version
git version 0.99.9.GIT
Uh, foo. That's a version from 02-Nov-2005. I guess I could
dig out a SHA1 and we'd know exactly what version it is.
(Request: Does it make sense to have a hard SHA1 as
part of git's output version string?)
First, I have this, because it came with a git-clone:
% cat .git/remotes/origin
URL: rsync://rsync.kernel.org/pub/scm/git/git.git
Pull: master:origin
I don't know how to say "Grab all the updates for
all the heads for which I have heads in my .git/refs".
So I hope "git pull --help" will tell me:
% git pull --help
usage: git-fetch-pack [-q] [-v] [--exec=upload-pack] [host:]directory <refs>...
Fetch failure: --help
That would be no. So I hit the man page, and I can't
quite decipher it. I'm dense, so I have to re-read it
a few more times until I fully grok it. Dinner interferes.
Like could I have just said?:
% git fetch rsync://rsync.kernel.org/pub/scm/git/git.git
or
% git fetch rsync://rsync.kernel.org/pub/scm/git/git.git master:origin
% git fetch rsync://rsync.kernel.org/pub/scm/git/git.git pu:pu
% git fetch rsync://rsync.kernel.org/pub/scm/git/git.git todo:todo
Dunno yet.
In the meantime, I figure I can effectively achieve my
goal by:
for each head $h
git checkout -f $h
git pull rsync://rsync.kernel.org/pub/scm/git/git.git $h:$h
So I start with master. I know I can cheat here and rely
on the "Pull: master:origin":
% git pull origin
receiving file list ... done
sent 102 bytes received 12339 bytes 8294.00 bytes/sec
total size is 4708148 speedup is 378.44
* committish: a3114b3428595710d4719dd668531210af5993c9
branch 'master' of rsync://rsync.kernel.org/pub/scm/git/git
* refs/heads/origin: same as branch 'master' of rsync://rsync.kernel.org/pub/scm/git/git
Already up-to-date.
That worked fine:
% git show-branch | head -15
! [maint] GIT 0.99.9b
* [master] Document --since and --until options to rev-parse.
! [origin] Document --since and --until options to rev-parse.
! [pu] Merge branch 'master'
! [todo] GIT 0.99.9
-----
+ [todo] GIT 0.99.9
+ [todo^] 2005-10-26 (prepare for 0.99.9)
+ [todo~2] Update 2005-10-19 afternoon.
+ [todo~3] 2005-10-18 midnight
+ [todo~4] 2005-10-16 early afternoon.
+ [todo~5] 2005-10-16 midnight.
+ [todo~6] Updates 2005-10-14 night
+ [todo~7] Updates 2005-10-12 night.
On to the pu branch:
% git checkout -f pu
% git show-branch | head -10
! [maint] GIT 0.99.9b
! [master] Document --since and --until options to rev-parse.
! [origin] Document --since and --until options to rev-parse.
* [pu] Merge branch 'master'
! [todo] GIT 0.99.9
-----
+ [todo] GIT 0.99.9
+ [todo^] 2005-10-26 (prepare for 0.99.9)
+ [todo~2] Update 2005-10-19 afternoon.
+ [todo~3] 2005-10-18 midnight
And pull it now:
% git pull rsync://rsync.kernel.org/pub/scm/git/git.git pu:pu
receiving file list ... done
sent 102 bytes received 12325 bytes 8284.67 bytes/sec
total size is 4708148 speedup is 378.86
* committish: 6c86914344ea64e3a7b287721bdeaa7d41f8a1c3
branch 'pu' of rsync://rsync.kernel.org/pub/scm/git/git
* refs/heads/pu: does not fast forward to branch 'pu' of rsync://rsync.kernel.org/pub/scm/git/git;
not updating.
Trying really trivial in-index merge...
fatal: Merge requires file-level merging
Nope.
Trying simple merge.
Simple merge failed, trying Automatic merge.
Auto-merging Makefile.
ERROR: git-merge-ours.sh: Not handling case -> a64704f3e52be43b427792ef9c1bbe42af057c87 -> 4f3d053889de4a5ba8e6e5d519c014a51220accd
fatal: merge program failed
Automatic merge failed; fix up by hand
Rats. But why did this fail? I've changed nothing in my tree.
I'm pulling remote pu into local pu directly. I think this
should Just Work...
Uh, now what?
% git status
# On branch refs/heads/pu
#
# Updated but not checked in:
# (will commit)
#
# new file: Documentation/git-http-push.txt
# modified: Documentation/git-rev-parse.txt
# modified: Makefile
# modified: commit.c
# modified: config.c
# modified: fetch-pack.c
# modified: git-branch.sh
# modified: git-checkout.sh
# unmerged: git-merge-ours.sh
# modified: git-push.sh
# new file: git-shallow-pack.sh
# modified: git-svnimport.perl
# new file: http-push.c
# modified: ls-files.c
# modified: name-rev.c
# modified: send-pack.c
# modified: server-info.c
# modified: sha1_name.c
# modified: t/t3001-ls-files-others-exclude.sh
# modified: tag.c
# modified: tag.h
# modified: upload-pack.c
#
#
# Changed but not updated:
# (use git-update-index to mark for commit)
#
# unmerged: git-merge-ours.sh
#
#
# Untracked files:
# (use "git add" to add to commit)
#
# git-merge-ours.sh
% git diff
* Unmerged path git-merge-ours.sh
% cat .git/HEAD
0e6a92bd0b33b3461fb7b7f7eb34647ad93d451d
% cat .git/FETCH_HEAD
6c86914344ea64e3a7b287721bdeaa7d41f8a1c3 branch 'pu' of rsync://rsync.kernel.org/pub/scm/git/git
So. Yes, I know I can "git-add git-merge-ours.sh" and then
do a "git-update-index git-merge-ours.sh" and get a spiffy
new index. And then I can "git-commit" it all, and that
should be everything.
But I really thought that this should Just Work?
Shouldn't this be a fast forward, nice-n-clean-n-easy?
Do I need to add .git/remote entries for each head?
Can I place multiple "Pull: pu:pu" type refspecs into
the one .git/remote/origin? Is that what people do?
Even if that I do that, I still have to manually iterate:
for each head $h
git checkout -f $h
git pull origin $h
More tequilla.
Thanks,
jdl
next reply other threads:[~2005-11-04 0:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-04 0:23 Jon Loeliger [this message]
2005-11-04 1:04 ` Trying to Update All Heads of a Repository Linus Torvalds
2005-11-04 2:42 ` Junio C Hamano
2005-11-04 23:47 ` Daniel Barkalow
2005-11-05 2:07 ` Junio C Hamano
2005-11-06 9:23 ` [PATCH] Set up remotes/origin to track all remote branches Junio C Hamano
-- strict thread matches above, loose matches on Subject: below --
2005-11-04 14:49 Trying to Update All Heads of a Repository Jon Loeliger
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1EXpN9-00034x-7g@jdl.com \
--to=jdl@freescale.com \
--cc=git@vger.kernel.org \
/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.
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 NNTP newsgroup(s).