* [StGit PATCH] Add "stg id" support for "{public}" ref
@ 2009-05-29 21:30 Catalin Marinas
2009-05-31 8:20 ` Karl Hasselström
0 siblings, 1 reply; 2+ messages in thread
From: Catalin Marinas @ 2009-05-29 21:30 UTC (permalink / raw)
To: git, Karl Hasselström
From: Catalin Marinas <catalin.marinas@arm.com>
The {public} ref refers to the public version of the branch as described
in the "publish" command.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
---
stgit/commands/common.py | 16 +++++++++++++++-
stgit/commands/diff.py | 6 +-----
stgit/commands/id.py | 13 +++++++------
stgit/commands/publish.py | 4 +---
4 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/stgit/commands/common.py b/stgit/commands/common.py
index 4f53f91..dfd7e26 100644
--- a/stgit/commands/common.py
+++ b/stgit/commands/common.py
@@ -53,11 +53,20 @@ def git_id(crt_series, rev):
repository = libstack.Repository.default()
return git_commit(rev, repository, crt_series.get_name()).sha1
+def get_public_ref(branch_name):
+ """Return the public ref of the branch."""
+ public_ref = config.get('branch.%s.public' % branch_name)
+ if not public_ref:
+ public_ref = 'refs/heads/%s.public' % branch_name
+ return public_ref
+
def git_commit(name, repository, branch_name = None):
"""Return the a Commit object if 'name' is a patch name or Git commit.
The patch names allowed are in the form '<branch>:<patch>' and can
be followed by standard symbols used by git rev-parse. If <patch>
- is '{base}', it represents the bottom of the stack.
+ is '{base}', it represents the bottom of the stack. If <patch> is
+ {public}, it represents the public branch corresponding to the stack as
+ described in the 'publish' command.
"""
# Try a [branch:]patch name first
branch, patch = parse_rev(name)
@@ -69,6 +78,11 @@ def git_commit(name, repository, branch_name = None):
base_id = repository.get_stack(branch).base.sha1
return repository.rev_parse(base_id +
strip_prefix('{base}', patch))
+ elif patch.startswith('{public}'):
+ public_ref = get_public_ref(branch)
+ return repository.rev_parse(public_ref +
+ strip_prefix('{public}', patch),
+ discard_stderr = True)
# Other combination of branch and patch
try:
diff --git a/stgit/commands/diff.py b/stgit/commands/diff.py
index 7d2f719..568651c 100644
--- a/stgit/commands/diff.py
+++ b/stgit/commands/diff.py
@@ -32,11 +32,7 @@ description = """
Show the diff (default) or diffstat between the current working copy
or a tree-ish object and another tree-ish object (defaulting to HEAD).
File names can also be given to restrict the diff output. The
-tree-ish object can be an StGIT patch, a standard git commit, tag or
-tree. In addition to these, the command also supports '{base}',
-representing the bottom of the current stack.
-
-rev = '[branch:](<patch>|{base}) | <tree-ish>'"""
+tree-ish object has the format accepted by the linkstg:id[] command."""
args = [argparse.known_files, argparse.dirty_files]
options = [
diff --git a/stgit/commands/id.py b/stgit/commands/id.py
index 566edcc..654ff72 100644
--- a/stgit/commands/id.py
+++ b/stgit/commands/id.py
@@ -24,12 +24,13 @@ help = 'Print the git hash value of a StGit reference'
kind = 'repo'
usage = ['[options] [id]']
description = """
-Print the SHA1 value of a Git id (defaulting to HEAD). In addition to
-the standard Git id's like heads and tags, this command also accepts
-'[<branch>:]<patch>' and '[<branch>:]{base}' showing the id of a patch
-or the base of the stack. If no branch is specified, it defaults to the
-current one. The bottom of a patch is accessible with the
-'[<branch>:]<patch>^' format."""
+Print the SHA1 value of a Git id (defaulting to HEAD). In addition to the
+standard Git id's like heads and tags, this command also accepts
+'[<branch>:]<patch>' for the id of a patch, '[<branch>:]\{base\}' for the base
+of the stack and '[<branch>:]\{public\}' for the public branch corresponding
+to the stack (see the 'publish' command for details). If no branch is
+specified, it defaults to the current one. The bottom of a patch is accessible
+with the '[<branch>:]<patch>^' format."""
args = [argparse.applied_patches, argparse.unapplied_patches,
argparse.hidden_patches]
diff --git a/stgit/commands/publish.py b/stgit/commands/publish.py
index e4b1a8d..401fbdf 100644
--- a/stgit/commands/publish.py
+++ b/stgit/commands/publish.py
@@ -82,9 +82,7 @@ def func(parser, options, args):
stack = repository.get_stack(options.branch)
if not args:
- public_ref = config.get('branch.%s.public' % stack.name)
- if not public_ref:
- public_ref = 'refs/heads/%s.public' % stack.name
+ public_ref = common.get_public_ref(stack.name)
elif len(args) == 1:
public_ref = args[0]
else:
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [StGit PATCH] Add "stg id" support for "{public}" ref
2009-05-29 21:30 [StGit PATCH] Add "stg id" support for "{public}" ref Catalin Marinas
@ 2009-05-31 8:20 ` Karl Hasselström
0 siblings, 0 replies; 2+ messages in thread
From: Karl Hasselström @ 2009-05-31 8:20 UTC (permalink / raw)
To: Catalin Marinas; +Cc: git
On 2009-05-29 22:30:04 +0100, Catalin Marinas wrote:
> The {public} ref refers to the public version of the branch as
> described in the "publish" command.
Looks reasonable.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalle
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2009-05-31 8:20 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-29 21:30 [StGit PATCH] Add "stg id" support for "{public}" ref Catalin Marinas
2009-05-31 8:20 ` Karl Hasselström
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).