Re: feature-request: git notes copy --to ref

2014-03-17 Thread Uwe Kleine-König
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.gi6...@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/  |
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


feature-request: git notes copy --to ref

2014-02-20 Thread Uwe Kleine-König
Hello,

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 :-)

Best regards
Uwe

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html