Skip to content


Subversion checkout URL

You can clone with
Download ZIP


After a long hiatus, TopGit has a new release, a new maintainer, and has moved
to GitHub: (note that patches are still
required to be signed off.)

If you are upgrading from the HEAD of the old TopGit repository, all of and
only the patches by me, Andrey Borzenkov and Heiko Hund are new compared to
that revision.

Andrey Borzenkov (13):
      tg-create: let format.signoff control adding of Signed-off-by check for removed branch in branch_annihilated support tag objects as parent
      tg-update: add -a support for all branches
      tg-update: clarify that there could be multiple PATTERNs
      tg-update: strip refs/top-bases/ from PATTERNs just in case
      tg-delete: simplistic check for dependency on deleted branch
      README: really update documentation
      tg-update: document variables
      tg: fix recursing with missing dependencies
      tg-update: allow skipping branch if recursion fails
      tg-update: correctly return error for missing deps
      tg-update: check for detached state of current branch

Bert Wesarg (21):
      Let tg-update take a branch parameter
      tg-remote: use default remote if none is given
      put die() messages to stderr
      tg-log: short cut to git log
      README: move note about shortcomings of using --first-parent from tg base to tg log simplify cat_file
      hooks/pre-commit: check .top* files in the to-be-commited tree
      hooks/pre-commit: check for cycles in dependencies
      hooks/pre-commit: check .topdeps for valid branches
      hooks/pre-commit: check for deps repetitions
      tg-files: list files changed by the topic branch
      provide a global temporary directory
      cat_file: take -i/-w parameters
      tg-export: use pretty_tree -b for base
      tg-files: simplify arg checking and add sanity check for -i/-w
      branch_empty: use pretty_tree and therefore respect -i/-w
      tg-patch: use pretty_tree and diff-tree to generate the patch
      list_deps: accept -i/-w
      tg-summary: accept -i/-w
      tg-mail: accept -i/-w
      tg-prev/tg-next: commands to explore dependencies

Carsten Hey (1):
      Don't call pre-commit hook if tg is not installed

Heiko Hund (1):
      --strip option for tg export

Michal Sojka (1):
      Make 'tg patch' work in subdirectories

Olaf Dabrunz (1):
      Add pointer about the problems regarding tg depend rm to README

Per Cederqvist (10):
      Implemented "tg summary --sort".
      Added the --deps option to "tg summary".
      Don't implement the usage message of tg depend more than once
      Ignore Emacs auto-save files
      Add "tg base" that prints the base version.
      Generalize subcommand selection in "tg depend"
      Refactor tg summary
      Do basic error checking in "tg depend add"
      Implement "tg summary --deps" as a shell function.
      Indicate the current branch in "tg summary --graphviz"

Robin Green (5):
      Make tg help work in any directory
      README: Fix obsolete references to git push
      INSTALL: Added installation instructions
      Documentation cleanup
      Bumped version to 0.9; last minute doc changes

Thomas Schwinge (3):
      tg-push: Filter out plain SHA1s from being pushed.
      tg-mail: Properly quote argument to --in-reply-to
      tg-delete: Handle the case where the branch has been removed already, but the base is still left.

Uwe Kleine-König (5):
      tg mail: document config setting to prevent unintended mass mail sending
      tg patch: treat all files as ascii
      Order .gitignore alphabetically
      Fix pretty_tree to work in a subdirectory
      README: clearify note describing short-comings of tg log

martin f. krafft (2):
      deal with single quotes in from/to headers
      quote $LESS in case it includes spaces


The highlight of this release is a new command tg push that has less
annoyances than the old way to push topgit branches.  Thanks to Marc
Weber for initial coding and Bert Wesarg for some polishing.

Other than that there are some bugfixes.

Bert Wesarg (5):
      tg-push: remove useless warning about missing bases for non-tgish branches
      tg-push: prevent handing branches more than once to git-push
      tg-push: handle non-tgish branches
      help: use pager
      tg-push: add bash completion

Ilpo Järvinen (1):
      tg-update: fix user visible typo in info msg

Jon Ringle (1):
      Fix tg export --quilt --numbered w/ > 8 patches

Marc Weber (1):
      tg-push: new command pushing a tgish branch

Uwe Kleine-König (13):
      Pass -- to diff-tree for branch/filename disambiguation
      Fix merge failure handling in tg export
      Call git-rerere after a failing merge as git-merge does
      Add GPLv2 and description for S-o-b
      hooks/ don't wail on detached head for missing .top* files
      don't use return when being sourced
      hooks/ don't stop commits on non-topgit branches
      hooks/ fix bashism
      depend: don't disallow adding a dependency on a non-TopGit-branch
      remove test for git send-email
      recurse_deps: if no_remotes is set don't recurse into remote deps
      tg-remote: don't add push specs but warn about existing ones.
      bump version number to 0.8


This is mainly a bugfix release that fixes some (of my) annoyances.

A highlight is a new export method (--linearize) that might be more suitable to
create a branch for feeding upstream.

Uwe Kleine-König (10):
      [TOPGIT] limit rev-list in branch_contains to a single rev
      [TOPGIT] allow working with annihilated branches
      [TOPGIT] make tg remote idempotent
      [TOPGIT] make creating a commit from a topgit branch a function
      [TOPGIT] implement linearize export method
      Don't throw away already started base on resumed create.
      Add documentation for tg export --linearize
      Merge branch 'upstream' of
      Fix typo s/emmail/email/
      bump version number to 0.7


Actually this is not a real release, I just tag because a mad duck has bumped
the version number. :-)

For completeness, here comes the shortlog:

Bert Wesarg (1):
      tg-summary: -t and --graphviz are mutual exclusive

Jonas Fonseca (1):
      README: spelling fixes

Kirill Smelkov (5):
      tg-completion: complete options for `tg summary`
      tg-completion: complete options for `tg remote`
      Implement setup_pager just like in git
      tg-patch: fix pagination
      tg-patch: add support for generating patches against worktree and index

Marc Weber (1):
      Pass -- to rev-list for branch/filename disambiguation

Uwe Kleine-König (5):
      tg-export: implement skipping empty patches for quilt mode
      tg export (collapse): implement skipping empty patches
      tg export (quilt): Implement flattening patch paths
      tg export (quilt): Implement numbering the patches
      make tg remote idempotent

martin f. krafft (14):
      ignore tg-depend build files
      remove +x bit from tg-depend
      Make sure gitignore patterns are not recursive
      add ignore patterns for quilt and debian build
      Change tg help exit code to 0
      Check for cmddir earlier
      Print help output when no command is given
      Require an argument to tg -r
      Print help message when command is not proper
      Note that do_help is used when short messages might be wanted
      Add Vim modelines for consistent spacing
      Check for git-send-email and die if not found
      put tg version into a variable at the top
      bump version number to 0.6


This release features a number of fixes and enhancements, including

  - Jonas' bash completion,
  - the tg-summary -t option (output just branch names),
  - tg-summary --graphviz to create dot graphs
  - tg-import -s to name commits and -d to specify base dependencies explicitly,·
  - tg-mail -r to generate an In-Reply-To header

Antonio Ospite (2):
      TopGit: small Makefile nitpichink
      TopGit: Force adding .topdeps on tg-depend

Jonas Fonseca (3):
      Add bash completion script for TopGit
      depend: Fix help listing
      Complete depend subcommand

Matt McDonald (2):
      tg depend: Allow adding deps from a subdir inside the repo.
      Make sure $root_dir does not have a trailing slash

Petr Baudis (17):
      README: Add warning about editing .topdeps manually
      tg depend: Even more robust subcommand handling
      tg summary -t: Very quick mode, only branch names
      tg-completion: Use tg summary -t for __tg_topics()
      tg mail: Fix $header string construction
      tg import -s: Import single commit using well-defined name
      tg import -d: Explicitly specify base dependency of the created branches
      tg import -s: Whitespace fix
      tg import: Construct actually proper .topmsg file
      tg import: More graceful conflicts handling
      tg update: Fix bogus advice on failed base update
      tg update: Always checkout head, even if we didn't update base further
      tg mail -r MSGID: Generate In-reply-to header
      tg export: Clarify usage
      README: lever -> level (spotted by jikos)
      tg summary --graphviz: Dot-suitable dependency graph
      README: tg depend rm TODO (insp. by Jonas)

martin f. krafft (3):
      tg-mail: do not use arrays, which are bashisms
      tg-export: no current branch check with -b
      Update version in tg script to 0.5


This is TopGit v0.4, continuing its mission of practical usability.
I have managed to somehow use this to actually manage a rather large
and non-trivial system of git-gui patches, recently submitted to git@.
(I send out the mail series using tg export --quilt and quilt mail
so far though, and I'm actually finding that quite convenient.)

The nicest thing about this release is Kirill's new 'tg mail' command,
'tg export --quilt -b' to create quilt series from arbitrary set of
topic branches and 'tg depend add', which has actually quite trivial
implementation, though. Then there's the usual bunch of small
enhancements and fixes.

Kirill Smelkov (3):
      tg help: <something>: improve readability
      tg import: fix + make more robust
      tg mail: new command for mailing patches

Petr Baudis (19): Typo fix (incanation -> incantation)
      .gitignore: Add tg-import, tg-remote
      Makefile: Changing Makefile means executables need to be regenerated too
      tg import: Require clean working tree and index
      tg import: Check out new files as we go
      tg delete: Allow branch delete if we aren't on symbolic HEAD
      tg remote README: Add 'git push --all' caveat warning
      tg info: Carry over missing Subject line in topmsg
      tg info, tg patch: Work on top-base HEAD too
      Ignore vim swp files
      tg mail: Tidyup
      tg mail: Simplify array usage
      tg export: Fix exporting remote-based branches
      tg delete: Fix spurious output
      tg depend add: Add dependency
      tg update: Fix resume message
      tg mail -s SEND_EMAIL_ARGS: Pass arguments to git send-email
      tg export: With quilt driver, accept explicit list of branches

Uwe Kleine-König (1):
      Use git-mailinfo to extract author informations from .topmsg


After awfully long delay, here comes v0.3 of TopGit - we hopefully start
to approach some kind of practical usability by now.

Aside of few minor changes, the major point of this release is remotes
handling; you can elevate any remote to a TopGit-tracked status using
'tg remote', then git fetch / push will haul around the TopGit bases
as well, and 'tg update' can update your local branches based on
the remote ones. Each repository has one "default" TopGit remote and
the local branches are supposed to reflect this one; that is the remote
'tg update' and all the other commands consider by default. Normally,
this remote is the last one you called 'tg remote --populate' on, but
you can change it in .git/config or switch it for a particular tg call
using the 'tg -r REMOTE command' parameter.

The other major improvement is new 'tg import' command by Aneesh Kumar
that lets you transform a series of commits to a topic branch sequence.
I decided not to consider the 'tg depend' work by Jan Nieuwenhuiz for this
release yet, since it will probably take me a bit of time yet to fully
understand his approach; so far, I have an uneasy feel about it.

Note that this release, as usual, received only very light testing - please
come back with any bugs you find. If someone would feel like adding at least
a simple testsuite, that would be really nice.

Aneesh Kumar K.V (1):
      topgit: Implement tg-import

Bert Wesarg (1):
      Makefile: Use $(wildcard) for commands_in

David Brown (1):
      Force adding the .topmsg and .topdep files.

Jan Nieuwenhuizen (1):
      TOPGIT: [PATCH] Use standard prefix and DESTDIR rather than explain

Jonathan Nieder (2):
      supply template argument to mktemp
      tg-info: fix sed typo

Petr Baudis (35):
      tg-export: Ensure we don't overwrite a branch by git update-ref
      tg create: Set up refs/top-bases/ after conflict resolution
      README: Sketch of my current ideas on remotes handling
      tg summary: Fix confusing variable name
      tg remote: New command Better explain base update
      Factor out rev-parse --verify calls to new ref_exists() function Set $base_remote to topgit.remote config value
      recurse_deps+branch_needs_update(): Deal with remote branches
      tg update: Support updating from remote branches
      has_remote(): Introduce to check if branch has remote counterpart
      tg info: Show information about remote branches
      tg info: Asterisk-prefix 'out-of-band' warnings
      tg summary: Show info about remote mates
      tg summary: 'L' denotes that push will update remote mate
      tg info: Note if local head is ahead of remote mate
      tg summary: Mark current branch with '>'
      tg -r REMOTE: Support for switching base remote
      tg summary: Fix spurious errors on tg-inconsistent remotes
      Fix recursive tg calls: Pass tg parameters through properly
      Account for direct-tg arguments in Usage strings
      tg import: Better description
      tg import: Standard script header
      tg import: Standard options parsing
      tg import: Remove tg_ prefixes from functions
      tg import: Change default prefix from tp/ to t/
      README: Add synopsis for working with remotes
      tg create -r BRANCH: Create branch based on a remote one
      tg import -p PREFIX: Custom prefix instead of t/
      tg import: Fix up process_commit() progress reporting
      branch_contains(): More explicit call to git rev-list
      tg import: Make the progress reporting stand out more
      Merge branch 'tg-import'
      README: Remove stale TODO

martin f. krafft (2):
      Add tg-export to gitignore
      Add various todos/wishlists


This is v0.2 of TopGit; we are steady on our way to v1.0! ;-)
This version features changed usage of tg create, new tg export command
that can export your patch queue either to a Git branch or Quilt series,
a huge amount of bugfixes, and improved documentation infrastructure.

Thanks go to Bert Wesarg, Russel Steicke and Antonio Ospite for their
patches - please keep them coming - and to martin f. krafft for
the testing, ideas and presentation to fellow Debian packagers.

Antonio Ospite (1): Add -h, --help aliases for the help command

Bert Wesarg (7): fix help string Introduce topgit.subjectprefix config option
      tg-info: pretty print dependencies Runtime tg-* command check Check for read permissions of help files
      Makefile: mkdir $(bindir) it's info/attributes not info/gitattributes

Petr Baudis (33):
      README: Fix synopsis of resuming tg create
      README: Two TODOs for tg summary
      README: TODO for tg depend
      README: TODO for tg tidy setup_hook(): Test existence instead of -x Fix list of >1 dependencies Bring deplist format in sync with tg info Show missing dependencies (needs_update() enhancement) Abort on missing dependencies
      needs_update(): Return non-zero if update is required Mark branches with missing dependencies by '\!' Fix nonempty indicator misalignment Clean up printing status columns
      README: TODO tg tidy -> tg collapse Change usage (-d -> arguments)
      README: Mark future tg patch features as TODO clearly Introduce topgit.{to,cc,bcc} config options
      needs_update(): Fix $missing_deps passing Pre-fill [PATCH] line with patch name Fix 'tg update' generated help text
      needs_update(): Split to recurse_deps() and branch_needs_update() helpers
      recurse_deps(): _-prefix $depsfile
      measure_branch(): Use _bname instead of _name local variable
      branch_needs_update(): Fox branch_contains call: $1 -> $_name
      recurse_deps(): Call itself, not needs_update(), recursively
      tg-export: New command for cleaning up history Avoid use of non-SUS 'echo -e'
      README: tg collapse is already implemented (as tg export)
      tg export: Really remove TopGit metadata files when exporting
      tg update: Do not use ${:n:m} substitution (bash extension)
      tg export: Support --quilt for exporting to quilt series
      tg export: Print progress messages _before_ the action

Russell Steicke (3):
      Check for pre-commit hook existence.
      Make "tg help cmd" print cmd help
      Pretty print the help creation commands in Makefile.


topgit-0.1: Initial release
Something went wrong with that request. Please try again.