Sun, 31 May 2020 11:33:41 -0500
keep these in git-helpers
bin/git-ctags | file | annotate | diff | comparison | revisions | |
bin/git-histedit | file | annotate | diff | comparison | revisions |
deleted file mode 100755 --- a/bin/git-ctags +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env ruby -exit if ENV['CTAGS_SKIP'] -running_hook = ENV['CTAGS_HOOK'] || false -ctags_cmd = ENV['CTAGS_CMD'] || 'ctags' - -case ARGV[0] -when 'help' - exec 'perldoc', '-T', $0 -when 'hook' - running_hook = true -end - -if (dir = `git rev-parse --show-toplevel 2>/dev/null`.chomp) != '' - list_cmd = 'git ls-files' - conf = "#{dir}/.git/ctags.conf" -elsif (dir = `hg root 2>/dev/null`.chomp) != '' - list_cmd = 'hg stat -Aqn' - conf = "#{dir}/.hg/ctags.conf" -else - abort 'not an hg or git repository' -end - -target = "#{dir}/.tags" -tmp = "#{dir}/.tags.#{$$}~" -opts = File.exists?(conf) ? "--options=#{conf}" : '' - -if running_hook - fork and exit - [STDIN, STDOUT, STDERR].each {|p| p.reopen '/dev/null'} - sleep 5 -end - -open(target, File::RDONLY|File::CREAT, 0644) do |f| - if running_hook - exit unless f.flock(File::LOCK_EX|File::LOCK_NB) - exit unless f.size == 0 || (Time.now - f.mtime) > 60 - end - - system(<<-CMD) or exit $?.exitstatus - #{list_cmd} \ - | #{ctags_cmd} --tag-relative -L - -f"#{tmp}" #{opts} \ - && mv #{tmp} #{target} - CMD -end - -exit 0 - -__END__ -=head1 NAME - -git-ctags - run ctags on git tracked files - -=head1 SYNOPSIS - - git ctags - - echo 'git ctags hook 2>/dev/null' >> .git/hooks/post-checkout && - chmod +x $_ - - git checkout some/branch - CTAGS_SKIP=1 git checkout some/branch - -=head1 DESCRIPTION - -Create a .tags file (target) using git's list of tracked files. If -C<.git/ctags.conf> exists in the repo it is passed to the ctags invocation. - -When run with the C<hook> argument or C<CTAGS_HOOK> set, additional behavior is -enabled to avoid excess re-runs during multiple VCS operations, and the work is -moved to background as well. - -=head2 Mercurial - -Mercurial repositories are supported too, with git taking priority when finding -a repo root. To add a hook, in the repository C<.hg/hgrc>, add: - - [hooks] - update = git ctags hook - -In a Mercurial repo, additional options can be put in C<.hg/ctags.conf>. - -=head1 ENVIRONMENT - -=head2 CTAGS_SKIP - -If defined, exit immediately. - -=head2 CTAGS_HOOK - -If defined, run as a VCS hook. This causes git-ctags to fork and exit, wait five -seconds, then try to lock and update the tags file if it hasn't been updated in -the last minute. - -=head2 CTAGS_CMD - -If defined, use this to invoke ctags rather than assuming C<ctags> can be found in -path. - -=cut
deleted file mode 100755 --- a/bin/git-histedit +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/sh -set -eu - -case ${1:-} in *help|-h) - exec perldoc -T $0;; -esac - -BRANCH="$(git symbolic-ref --short -q HEAD)" -BASE=$(git merge-base "@{u}" "$BRANCH") - -exec git rebase --interactive --autosquash "$@" "$BASE" "$BRANCH" - -:<<=cut -=head1 NAME - -git histedit - -=head1 SYNOPSIS - - $ git histedit - -=head1 DESCRIPTION - -C<histedit> lets you edit the current branch using interactive rebase, but -without actually I<moving> the fork point of your branch, avoiding the -complications of fixing up your history and dealing with merge conflicts at the -same time. - -See also: C<hg histedit> - -=cut