git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: git@vger.kernel.org
Cc: kernel@pengutronix.de, Johan Herland <johan@herland.net>,
	Stephen Boyd <bebarino@gmail.com>,
	Jonathan Nieder <jrnieder@gmail.com>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: feature-request: git notes copy --to <ref>
Date: Mon, 17 Mar 2014 11:11:44 +0100	[thread overview]
Message-ID: <20140317101144.GO15674@pengutronix.de> (raw)
In-Reply-To: <20140220210334.GM6988@pengutronix.de>

Hello again,

On Thu, Feb 20, 2014 at 10:03:34PM +0100, Uwe Kleine-König wrote:
> I'm playing around with git-notes and want to share some of my notes
> with my co-workers. We have a central repository for our various topic
> branches and want to track upstream inclusion in git-notes. So we have
> to share our notes branch somehow.
> 
> The workflow I think makes sense here is (untested):
> 
> 	### hack hack, add notes bla blub
> 	### -> nice topic branch with some notes
> 
> 	git fetch serverrepo refs/notes/commits:refs/notes/servercommits
> 	git notes merge refs/notes/servercommits
> 	git rev-list origin/master.. | awk '{print $1 " " $1}' | git notes copy --to refs/notes/servercommits --stdin
> 	git push serverrepo refs/notes/servercommits:refs/notes/commits
> 
> Then maybe:
> 
> 	git notes merge refs/notes/servercommits
> 
> again.
> 
> The idea here is to only include notes in refs/notes/servercommits that
> are relevant for my coworkers and not all intermediate notes that were
> created during development or while working on other branches.
> 
> Does this make sense? Do you have better ideas or suggestions how to
> improve the workflow?
> 
> The only problem now is that git notes copy doesn't take a --to
> parameter. Maybe there is a volunteer to implement it? Then I'd
> volunteer to test it :-)
I have implemented something now to copy notes to another branch. Here
is it for reference:

--->8---
#! /bin/sh

set -e

. git-sh-setup

# for now the remote notes rev must be a ref below refs/notes
# see id:20140220153045.GI6988@pengutronix.de for the respective plea.
remote_notes="refs/notes/servercommits"
local_notes="$(git notes get-ref)"

remote_notes_ref=$(git rev-parse --verify "$remote_notes^{commit}")

tmpfile=$(mktemp)
trap "rm \"$tmpfile\"" EXIT

git rev-list "$@" | sed 's/^/100644 blob [0-9a-f]{40}\t/' > $tmpfile

GIT_DIR=$(git rev-parse --git-dir)

GIT_INDEX_FILE="$GIT_DIR/index-rnotes" git read-tree "$remote_notes"
git ls-tree "$local_notes" | grep -E -f "$tmpfile" | GIT_INDEX_FILE="$GIT_DIR/index-rnotes" git update-index --index-info

tree=$(GIT_INDEX_FILE="$GIT_DIR/index-rnotes" git write-tree)

if test "x$tree" = "x$(git rev-parse "$remote_notes_ref^{tree}")"; then
	echo "empty commit"
	exit 0
fi

commit=$(git commit-tree "$tree" -p "$remote_notes_ref" << EOF
Notes added by 'git notes-copy'

source notes: $(git rev-parse $local_notes)
EOF
)

git update-ref "$remote_notes" $commit $remote_notes_ref
--->8---

It still has some edges, but I think it will do for me. Enhancements
welcome.

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |

      reply	other threads:[~2014-03-17 10:12 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-20 21:03 feature-request: git notes copy --to <ref> Uwe Kleine-König
2014-03-17 10:11 ` Uwe Kleine-König [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

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

  git send-email \
    --in-reply-to=20140317101144.GO15674@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=bebarino@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johan@herland.net \
    --cc=jrnieder@gmail.com \
    --cc=kernel@pengutronix.de \
    /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).