From feac147cc18e7748c3795cdb277fde3ab58e7bd6 Mon Sep 17 00:00:00 2001 From: Austin Morgan Date: Sun, 7 Jul 2024 11:22:55 -0500 Subject: [PATCH] Release 0.4.7 - Convert testing to use docker with updated git versions - Fix numerous places where quoting was incorrect causing path name collisions - Fix pull-force test to deal with git not defaulting to merges on pulls after 2.33 - Fix issue where docker tests didn't work with git 2.30 or higher because of increased permission scrutiny. - Update readme to say this tools is in production environments - Update readme to use internet archive for old articles about subrepo no longer available on their original source --- Changes | 10 ++ Meta | 4 +- ReadMe.pod | 4 +- doc/git-subrepo.swim | 2 +- lib/git-subrepo | 2 +- man/man1/git-subrepo.1 | 200 ++++++++++++++---------------- share/completion.bash | 2 +- share/zsh-completion/_git-subrepo | 4 +- 8 files changed, 111 insertions(+), 117 deletions(-) diff --git a/Changes b/Changes index 61ece692..aed5a787 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,13 @@ +version: 0.4.7 +date: Sun 7 Jul 2024 11:04:00 AM EST +- Convert testing to use docker with updated git versions +- Fix numerous places where quoting was incorrect causing path name collisions +- Fix pull-force test to deal with git not defaulting to merges on pulls after 2.33 +- Fix issue where docker tests didn't work with git 2.30 or higher because of + increased permission scrutiny. +- Update readme to say this tools is in production environments +- Update readme to use internet archive for old articles about subrepo no longer + available on their original source --- version: 0.4.6 date: Fri 21 Apr 2023 10:18:34 AM EST diff --git a/Meta b/Meta index babc4e70..eacc1908 100644 --- a/Meta +++ b/Meta @@ -1,11 +1,11 @@ =meta: 0.0.2 name: git-subrepo -version: 0.4.6 +version: 0.4.7 abstract: Git Submodule Alternative homepage: https://github.com/ingydotnet/git-subrepo#readme license: MIT -copyright: 2013-2023 +copyright: 2013-2024 author: name: Ingy döt Net diff --git a/ReadMe.pod b/ReadMe.pod index 75854efe..faca2c72 100644 --- a/ReadMe.pod +++ b/ReadMe.pod @@ -642,8 +642,8 @@ function is called: =head1 Status -The git-subrepo command has been used in production and seems to get -the job done. Development is still ongoing but mostly just for fixing bugs. +The git-subrepo command has been used in production and seems to get the job +done. Development is still ongoing but mostly just for fixing bugs. Trying subrepo out is simple and painless (this is not C). Nothing is permanent (if you do not push to shared remotes). ie You can always diff --git a/doc/git-subrepo.swim b/doc/git-subrepo.swim index eefb1bf2..3560df88 100644 --- a/doc/git-subrepo.swim +++ b/doc/git-subrepo.swim @@ -577,7 +577,7 @@ is called: = Status -The git-subrepo command has been in use for well over a year and seems to get +The git-subrepo command has been used in production and seems to get the job done. Development is still ongoing but mostly just for fixing bugs. Trying subrepo out is simple and painless (this is not `git submodule`). diff --git a/lib/git-subrepo b/lib/git-subrepo index 54b9bf18..eabf9b19 100755 --- a/lib/git-subrepo +++ b/lib/git-subrepo @@ -30,7 +30,7 @@ fi bash+:import :std can version-check -VERSION=0.4.6 +VERSION=0.4.7 REQUIRED_BASH_VERSION=4.0 REQUIRED_GIT_VERSION=2.7.0 GIT_TMP=$(git rev-parse --git-common-dir 2> /dev/null || echo .git)/tmp diff --git a/man/man1/git-subrepo.1 b/man/man1/git-subrepo.1 index b67899af..47888c57 100644 --- a/man/man1/git-subrepo.1 +++ b/man/man1/git-subrepo.1 @@ -1,4 +1,5 @@ -.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== @@ -15,29 +16,12 @@ .ft R .fi .. -.\" Set up some character translations and predefined strings. \*(-- will -.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left -.\" double quote, and \*(R" will give a right double quote. \*(C+ will -.\" give a nicer C++. Capital omega is used to do unbreakable dashes and -.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, -.\" nothing in troff, for use with C<>. -.tr \(*W- -.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ -. ds -- \(*W- -. ds PI pi -. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch -. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch -. ds L" "" -. ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ -. ds -- \|\(em\| -. ds PI \(*p -. ds L" `` -. ds R" '' . ds C` . ds C' 'br\} @@ -71,15 +55,15 @@ .\" ======================================================================== .\" .IX Title "STDIN 1" -.TH STDIN 1 "August 2022" "Generated by Swim v0.1.48" "Git Submodule Alternative" +.TH STDIN 1 2024-07-07 "Generated by Swim v0.1.48" "Git Submodule Alternative" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh -.SH "Name" +.SH Name .IX Header "Name" git-subrepo \- Git Submodule Alternative -.SH "Synopsis" +.SH Synopsis .IX Header "Synopsis" .Vb 1 \& git subrepo \-h # Help Overview @@ -101,71 +85,71 @@ git-subrepo \- Git Submodule Alternative \& git subrepo version \& git subrepo upgrade .Ve -.SH "Description" +.SH Description .IX Header "Description" -This git command \*(L"clones\*(R" an external git repo into a subdirectory of your +This git command "clones" an external git repo into a subdirectory of your repo. Later on, upstream changes can be pulled in, and local changes can be pushed back. Simple. -.SH "Benefits" +.SH Benefits .IX Header "Benefits" This command is an improvement from \f(CW\*(C`git\-submodule\*(C'\fR and \f(CW\*(C`git\-subtree\*(C'\fR; two other git commands with similar goals, but various problems. .PP It assumes there are 3 main roles of people interacting with a repo, and attempts to serve them all well: -.IP "\(bu" 4 +.IP \(bu 4 \&\fBowner\fR \- The person who authors/owns/maintains a repo. -.IP "\(bu" 4 +.IP \(bu 4 \&\fBusers\fR \- People who are just using/installing the repo. -.IP "\(bu" 4 +.IP \(bu 4 \&\fBcollaborators\fR \- People who commit code to the repo and subrepos. .PP The \f(CW\*(C`git\-subrepo\*(C'\fR command benefits these roles in the following ways: -.IP "\(bu" 4 +.IP \(bu 4 Simple and intuitive commandline usage (with tab completion). -.IP "\(bu" 4 +.IP \(bu 4 Users get your repo and all your subrepos just by cloning your repo. -.IP "\(bu" 4 +.IP \(bu 4 Users do not need to install \f(CW\*(C`git\-subrepo\*(C'\fR, ever. -.IP "\(bu" 4 +.IP \(bu 4 Collaborators do not need to install unless they want to push/pull. -.IP "\(bu" 4 +.IP \(bu 4 Collaborators know when a subdir is a subrepo (it has a \f(CW\*(C`.gitrepo\*(C'\fR file). -.IP "\(bu" 4 +.IP \(bu 4 The \f(CW\*(C`.gitrepo\*(C'\fR file never gets pushed back to the subrepo upstream. -.IP "\(bu" 4 +.IP \(bu 4 Well named branches and remotes are generated for manual operations. -.IP "\(bu" 4 +.IP \(bu 4 Owners do not deal with the complications of keeping submodules in sync. -.IP "\(bu" 4 +.IP \(bu 4 Subrepo repositories can contain subrepos themselves. -.IP "\(bu" 4 +.IP \(bu 4 Branching with subrepos JustWorks™. -.IP "\(bu" 4 +.IP \(bu 4 Different branches can have different subrepos in different states, etc. -.IP "\(bu" 4 +.IP \(bu 4 Moving/renaming/deleting a subrepo subdir JustWorks™. -.IP "\(bu" 4 +.IP \(bu 4 You can \f(CW\*(C`init\*(C'\fR an existing subdirectory into a subrepo. -.IP "\(bu" 4 +.IP \(bu 4 Your git history is kept squeaky clean. -.IP "\(bu" 4 +.IP \(bu 4 Upstream history (clone/pull) is condensed into a single commit. -.IP "\(bu" 4 +.IP \(bu 4 Pulls can use a \f(CW\*(C`merge\*(C'\fR, \f(CW\*(C`rebase\*(C'\fR or \f(CW\*(C`force\*(C'\fR strategies. -.IP "\(bu" 4 +.IP \(bu 4 You can see the subrepo history with \f(CW\*(C`git log subrepo//fetch\*(C'\fR. -.IP "\(bu" 4 +.IP \(bu 4 Commits pushed back upstream are \fBnot\fR condensed (by default). -.IP "\(bu" 4 +.IP \(bu 4 Trivial to try any subrepo operations and then reset back. -.IP "\(bu" 4 +.IP \(bu 4 No configuration required. -.IP "\(bu" 4 +.IP \(bu 4 Does not introduce history that messes up other git commands. -.IP "\(bu" 4 +.IP \(bu 4 Fixes known rebase failures with \f(CW\*(C`git\-subtree\*(C'\fR. -.SH "Installation" +.SH Installation .IX Header "Installation" The best short answer is: .PP @@ -174,10 +158,10 @@ The best short answer is: \& echo \*(Aqsource /path/to/git\-subrepo/.rc\*(Aq >> ~/.bashrc .Ve .PP -The complete \*(L"Installation Instructions\*(R" can be found below. +The complete "Installation Instructions" can be found below. .PP Note: git-subrepo needs a git version (> 2.7) that supports worktree:s. -.SH "Commands" +.SH Commands .IX Header "Commands" All the \fBsubrepo\fR commands use names of actual Git commands and try to do operations that are similar to their Git counterparts. They also attempt to @@ -204,7 +188,7 @@ All subsequent commands refer to the subrepo by the name of the \&\fIsubdir\fR. From the subdir, all the current information about the subrepo can be obtained. .Sp -The \f(CW\*(C`\-\-force\*(C'\fR option will \*(L"reclone\*(R" (completely replace) an existing subdir. +The \f(CW\*(C`\-\-force\*(C'\fR option will "reclone" (completely replace) an existing subdir. .Sp The \f(CW\*(C`\-\-method\*(C'\fR option will decide how the join process between branches are performed. The default option is merge. @@ -223,7 +207,7 @@ original repo will look exactly the same except that there will be a \f(CW\*(C`< .Sp If you specify the \f(CW\*(C`\-\-remote\*(C'\fR (and optionally the \f(CW\*(C`\-\-branch\*(C'\fR) option, the values will be added to the \f(CW\*(C`/.gitrepo\*(C'\fR file. The \f(CW\*(C`\-\-remote\*(C'\fR -option is the upstream \s-1URL,\s0 and the \f(CW\*(C`\-\-branch\*(C'\fR option is the upstream branch +option is the upstream URL, and the \f(CW\*(C`\-\-branch\*(C'\fR option is the upstream branch to push to. These values will be needed to do a \f(CW\*(C`git subrepo push\*(C'\fR command, but they can be provided later on the \f(CW\*(C`push\*(C'\fR command (and saved to \f(CW\*(C`<> if you also specify the \f(CW\*(C`\-\-update\*(C'\fR option). .Sp @@ -297,19 +281,19 @@ the \f(CW\*(C`branch\*(C'\fR command and merge things yourself before pushing if (although that is probably a rare use case). .Sp The \f(CW\*(C`push\*(C'\fR command requires a branch that has been properly merged/rebased -with the upstream \s-1HEAD\s0 (unless the upstream \s-1HEAD\s0 is empty, which is common -when doing a first \f(CW\*(C`push\*(C'\fR after an \f(CW\*(C`init\*(C'\fR). That means the upstream \s-1HEAD\s0 is +with the upstream HEAD (unless the upstream HEAD is empty, which is common +when doing a first \f(CW\*(C`push\*(C'\fR after an \f(CW\*(C`init\*(C'\fR). That means the upstream HEAD is one of the commits in the branch. .Sp By default the branch ref \f(CW\*(C`refs/subrepo//pull\*(C'\fR will be pushed, but you can specify a (properly merged) branch to push. .Sp After that, the \f(CW\*(C`push\*(C'\fR command just checks that the branch contains the -upstream \s-1HEAD\s0 and then pushes it upstream. +upstream HEAD and then pushes it upstream. .Sp The \f(CW\*(C`\-\-force\*(C'\fR option will do a force push. Force pushes are typically discouraged. Only use this option if you fully understand it. (The \f(CW\*(C`\-\-force\*(C'\fR -option will \s-1NOT\s0 check for a proper merge. \s-1ANY\s0 branch will be force pushed!) +option will NOT check for a proper merge. ANY branch will be force pushed!) .Sp The \f(CW\*(C`push\*(C'\fR command accepts the \f(CW\*(C`\-\-all\*(C'\fR, \f(CW\*(C`\-\-branch=\*(C'\fR, \f(CW\*(C`\-\-dry\-run\*(C'\fR, \f(CW\*(C`\-\-file\*(C'\fR, \f(CW\*(C`\-\-force\*(C'\fR, \f(CW\*(C`\-\-merge\*(C'\fR, \f(CW\*(C`\-\-message\*(C'\fR, \f(CW\*(C`\-\-rebase\*(C'\fR, \f(CW\*(C`\-\-remote=\*(C'\fR, \f(CW\*(C`\-\-squash\*(C'\fR and \f(CW\*(C`\-\-update\*(C'\fR options. .ie n .IP """git subrepo fetch |\-\-all [\-r ] [\-b ]""" 4 @@ -341,11 +325,11 @@ The \f(CW\*(C`branch\*(C'\fR command accepts the \f(CW\*(C`\-\-all\*(C'\fR, \f(C .IX Item "git subrepo commit [] [-m ] [--file=] [-e] [-f] [-F]" Add subrepo branch to current history as a single commit. .Sp -This command is generally used after a hand-merge. You have done a \f(CW\*(C`subrepobranch\*(C'\fR and merged (rebased) it with the upstream. This command takes the \s-1HEAD\s0 +This command is generally used after a hand-merge. You have done a \f(CW\*(C`subrepobranch\*(C'\fR and merged (rebased) it with the upstream. This command takes the HEAD of that branch, puts its content into the subrepo subdir and adds a new commit for it to the top of your mainline history. .Sp -This command requires that the upstream \s-1HEAD\s0 be in the \f(CW\*(C`subrepo/\*(C'\fR +This command requires that the upstream HEAD be in the \f(CW\*(C`subrepo/\*(C'\fR branch history. That way the same branch can push upstream. Use the \f(CW\*(C`\-\-force\*(C'\fR option to commit anyway. .Sp @@ -359,7 +343,7 @@ Get the status of a subrepo. Uses the \f(CW\*(C`\-\-all\*(C'\fR option by defaul The \f(CW\*(C`\-\-verbose\*(C'\fR option will show all the recent local and upstream commits. .Sp Use \f(CW\*(C`\-\-ALL\*(C'\fR to show the subrepos of the subrepos (ie the -\&\*(L"subsubrepos\*(R"), if any. +"subsubrepos"), if any. .Sp The \f(CW\*(C`status\*(C'\fR command accepts the \f(CW\*(C`\-\-all\*(C'\fR, \f(CW\*(C`\-\-ALL\*(C'\fR, \f(CW\*(C`\-\-fetch\*(C'\fR, \f(CW\*(C`\-\-quiet\*(C'\fR and \f(CW\*(C`\-\-verbose\*(C'\fR options. @@ -379,7 +363,7 @@ Use \f(CW\*(C`\-\-all\*(C'\fR to clean up after all the current subrepos. Someti change to a branch where a subrepo doesn't exist, and then \f(CW\*(C`\-\-all\*(C'\fR won't find it. Use \f(CW\*(C`\-\-ALL\*(C'\fR to remove any artifacts that were ever created by subrepo. .Sp -To remove \s-1ALL\s0 subrepo artifacts: +To remove ALL subrepo artifacts: .Sp .Vb 1 \& git subrepo clean \-\-ALL \-\-force @@ -429,15 +413,15 @@ latest code. .SH "Command Options" .IX Header "Command Options" .ie n .IP """\-h""" 4 -.el .IP "\f(CW\-h\fR" 4 +.el .IP \f(CW\-h\fR 4 .IX Item "-h" Show a brief view of the commands and options. .ie n .IP """\-\-help""" 4 -.el .IP "\f(CW\-\-help\fR" 4 +.el .IP \f(CW\-\-help\fR 4 .IX Item "--help" Gives an overview of the help options available for the subrepo command. .ie n .IP """\-\-version""" 4 -.el .IP "\f(CW\-\-version\fR" 4 +.el .IP \f(CW\-\-version\fR 4 .IX Item "--version" Print the git-subrepo version. Just the version number. Try the \f(CW\*(C`version\*(C'\fR command for more version info. @@ -450,12 +434,12 @@ applicable). .el .IP "\f(CW\-\-ALL\fR (\f(CW\-A\fR)" 4 .IX Item "--ALL (-A)" If you have subrepos that also have subrepos themselves, issue the command to -\&\s-1ALL\s0 of them. Note that the \f(CW\*(C`\-\-ALL\*(C'\fR option only works for a subset of the +ALL of them. Note that the \f(CW\*(C`\-\-ALL\*(C'\fR option only works for a subset of the commands that \f(CW\*(C`\-\-all\*(C'\fR works for. .ie n .IP """\-\-branch="" (""\-b "")" 4 .el .IP "\f(CW\-\-branch=\fR (\f(CW\-b \fR)" 4 .IX Item "--branch= (-b )" -Use a different upstream branch-name than the remote \s-1HEAD\s0 or the one saved in +Use a different upstream branch-name than the remote HEAD or the one saved in \&\f(CW\*(C`.gitrepo\*(C'\fR locally. .ie n .IP """\-\-dry\-run"" (""\-N"")" 4 .el .IP "\f(CW\-\-dry\-run\fR (\f(CW\-N\fR)" 4 @@ -479,7 +463,7 @@ Supply your own commit message from a file .IX Item "--force (-f)" Use this option to force certain commands that fail in the general case. .Sp -\&\s-1NOTE:\s0 The \f(CW\*(C`\-\-force\*(C'\fR option means different things for different commands. +NOTE: The \f(CW\*(C`\-\-force\*(C'\fR option means different things for different commands. Read the command specific doc for the exact meaning. .ie n .IP """\-\-merge"" (""\-M"")" 4 .el .IP "\f(CW\-\-merge\fR (\f(CW\-M\fR)" 4 @@ -528,41 +512,41 @@ Applicable to most commands. .el .IP "\f(CW\-\-DEBUG\fR (\f(CW\-x\fR)" 4 .IX Item "--DEBUG (-x)" Use the Bash \f(CW\*(C`set \-x\*(C'\fR option which prints every command before it is -run. \s-1VERY\s0 noisy, but extremely useful in deep debugging. Applicable to +run. VERY noisy, but extremely useful in deep debugging. Applicable to all commands. .SH "Environment Variables" .IX Header "Environment Variables" The \f(CW\*(C`git\-subrepo\*(C'\fR command exports and honors some environment variables: .ie n .IP """GIT_SUBREPO_ROOT""" 4 -.el .IP "\f(CWGIT_SUBREPO_ROOT\fR" 4 +.el .IP \f(CWGIT_SUBREPO_ROOT\fR 4 .IX Item "GIT_SUBREPO_ROOT" This is set by the \f(CW\*(C`.rc\*(C'\fR file, if you use that method to install / enable \f(CW\*(C`git\-subrepo\*(C'\fR. It contains the path of the \f(CW\*(C`git\-subrepo\*(C'\fR repository. .ie n .IP """GIT_SUBREPO_RUNNING""" 4 -.el .IP "\f(CWGIT_SUBREPO_RUNNING\fR" 4 +.el .IP \f(CWGIT_SUBREPO_RUNNING\fR 4 .IX Item "GIT_SUBREPO_RUNNING" This variable is exported when \f(CW\*(C`git\-subrepo\*(C'\fR is running. It is set to the pid of the \f(CW\*(C`git\-subrepo\*(C'\fR process that is running. Other processes, like git hooks for instance, can use this information to adjust accordingly. .ie n .IP """GIT_SUBREPO_COMMAND""" 4 -.el .IP "\f(CWGIT_SUBREPO_COMMAND\fR" 4 +.el .IP \f(CWGIT_SUBREPO_COMMAND\fR 4 .IX Item "GIT_SUBREPO_COMMAND" This variable is exported when \f(CW\*(C`git\-subrepo\*(C'\fR is running. It is set to the name of the \f(CW\*(C`git\-subrepo\*(C'\fR subcommand that is running. .ie n .IP """GIT_SUBREPO_PAGER""" 4 -.el .IP "\f(CWGIT_SUBREPO_PAGER\fR" 4 +.el .IP \f(CWGIT_SUBREPO_PAGER\fR 4 .IX Item "GIT_SUBREPO_PAGER" Use this to specify the pager to use for long output commands. Defaults to \&\f(CW$PAGER\fR or \f(CW\*(C`less\*(C'\fR. .ie n .IP """GIT_SUBREPO_QUIET""" 4 -.el .IP "\f(CWGIT_SUBREPO_QUIET\fR" 4 +.el .IP \f(CWGIT_SUBREPO_QUIET\fR 4 .IX Item "GIT_SUBREPO_QUIET" Set this for quiet (\f(CW\*(C`\-q\*(C'\fR) output. .ie n .IP """GIT_SUBREPO_VERBOSE""" 4 -.el .IP "\f(CWGIT_SUBREPO_VERBOSE\fR" 4 +.el .IP \f(CWGIT_SUBREPO_VERBOSE\fR 4 .IX Item "GIT_SUBREPO_VERBOSE" Set this for verbose (\f(CW\*(C`\-v\*(C'\fR) output. .ie n .IP """GIT_SUBREPO_DEBUG""" 4 -.el .IP "\f(CWGIT_SUBREPO_DEBUG\fR" 4 +.el .IP \f(CWGIT_SUBREPO_DEBUG\fR 4 .IX Item "GIT_SUBREPO_DEBUG" Set this for debugging (\f(CW\*(C`\-d\*(C'\fR) output. .SH "Installation Instructions" @@ -604,18 +588,18 @@ to your other git commands: .Ve .PP This method does not account for upgrading and command completion yet. -.SS "Windows" +.SS Windows .IX Subsection "Windows" This command is known to work in these Windows environments: -.IP "\(bu" 4 -Git for Windows \*(-- -.IP "\(bu" 4 -Babun \*(-- -.IP "\(bu" 4 -Cygwin \*(-- +.IP \(bu 4 +Git for Windows \-\- +.IP \(bu 4 +Babun \-\- +.IP \(bu 4 +Cygwin \-\- .PP Let us know if there are others that it works (or doesn't work) in. -.SH "Testing" +.SH Testing .IX Header "Testing" The \f(CW\*(C`git\-subrepo\*(C'\fR repository comes with a extensive test suite. You can run it with: @@ -629,7 +613,7 @@ or if you don't have \f(CW\*(C`make\*(C'\fR on your system: .Vb 1 \& prove \-v test .Ve -.SH "Upgrading" +.SH Upgrading .IX Header "Upgrading" If you used the \f(CW\*(C`.rc\*(C'\fR or \f(CW\*(C`PATH\*(C'\fR method of installation, just run this to upgrade \f(CW\*(C`git\-subrepo\*(C'\fR: @@ -666,17 +650,17 @@ need to enable that first: .PP On your system, the Git completion script might be found at any of the following locations (or somewhere else that we don't know about): -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`/etc/bash_completion.d/git\*(C'\fR -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`/usr/share/bash\-completion/git\*(C'\fR -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`/usr/share/bash\-completion/completions/git\*(C'\fR -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`/opt/local/share/bash\-completion/completions/git\*(C'\fR -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`/usr/local/etc/bash_completion.d/git\*(C'\fR -.IP "\(bu" 4 +.IP \(bu 4 \&\f(CW\*(C`~/.homebrew/etc/bash_completion.d/git\*(C'\fR .PP In case you can't find any of these, this repository contains a copy of the @@ -701,10 +685,10 @@ function is called: .Vb 1 \& fpath=(\*(Aq/path/to/git\-subrepo/share/zsh\-completion\*(Aq $fpath) .Ve -.SH "Status" +.SH Status .IX Header "Status" -The git-subrepo command has been in use for well over a year and seems to get -the job done. Development is still ongoing but mostly just for fixing bugs. +The git-subrepo command has been used in production and seems to get the job +done. Development is still ongoing but mostly just for fixing bugs. .PP Trying subrepo out is simple and painless (this is not \f(CW\*(C`git submodule\*(C'\fR). Nothing is permanent (if you do not push to shared remotes). ie You can always @@ -716,28 +700,28 @@ issues on anything that seems wrong. .PP If you want to chat about the \f(CW\*(C`git\-subrepo\*(C'\fR command, join \f(CW\*(C`#gitcommands\*(C'\fR on \&\f(CW\*(C`irc.freenode.net\*(C'\fR. -.SH "Notes" +.SH Notes .IX Header "Notes" -.IP "\(bu" 4 -Works on \s-1POSIX\s0 systems: Linux, \s-1BSD, OSX,\s0 etc. -.IP "\(bu" 4 -Works on various Windows environments. See \*(L"Windows\*(R" section above. -.IP "\(bu" 4 +.IP \(bu 4 +Works on POSIX systems: Linux, BSD, OSX, etc. +.IP \(bu 4 +Works on various Windows environments. See "Windows" section above. +.IP \(bu 4 The \f(CW\*(C`git\-subrepo\*(C'\fR repo itself has 2 subrepos under the \f(CW\*(C`ext/\*(C'\fR subdirectory. -.IP "\(bu" 4 +.IP \(bu 4 Written in (very modern) Bash, with full test suite. Take a look. -.IP "\(bu" 4 +.IP \(bu 4 A \f(CW\*(C`.gitrepo\*(C'\fR file never is in the top level dir (next to a \f(CW\*(C`.git/\*(C'\fR dir). -.SH "Authors" +.SH Authors .IX Header "Authors" -.IP "\(bu" 4 +.IP \(bu 4 Ingy döt Net -.IP "\(bu" 4 +.IP \(bu 4 Magnus Carlsson -.IP "\(bu" 4 +.IP \(bu 4 Austin Morgan .SH "License and Copyright" .IX Header "License and Copyright" -The \s-1MIT\s0 License (\s-1MIT\s0) +The MIT License (MIT) .PP Copyright (c) 2013\-2020 Ingy döt Net diff --git a/share/completion.bash b/share/completion.bash index adaa9c6d..89f30a46 100644 --- a/share/completion.bash +++ b/share/completion.bash @@ -3,7 +3,7 @@ # DO NOT EDIT. This file generated by pkg/bin/generate-completion.pl. _git_subrepo() { - local _opts=" -h --help --version -a --all -A --ALL -b= --branch= -e --edit -f --force -F --fetch -M= --method= --Default -m= --message= -r= --remote= -s --squash -u --update -q --quiet -v --verbose -d --debug -x --DEBUG" + local _opts=" -h --help --version -a --all -A --ALL -b= --branch= -e --edit -f --force -F --fetch -M= --method= -m= --message= --file= -r= --remote= -s --squash -u --update -q --quiet -v --verbose -d --debug -x --DEBUG" local subcommands="branch clean clone commit config fetch help init pull push status upgrade version" local subdircommands="branch clean commit config fetch pull push status" local subcommand="$(__git_find_on_cmdline "$subcommands")" diff --git a/share/zsh-completion/_git-subrepo b/share/zsh-completion/_git-subrepo index a8069d9f..7f913d69 100644 --- a/share/zsh-completion/_git-subrepo +++ b/share/zsh-completion/_git-subrepo @@ -19,9 +19,9 @@ _git-subrepo() { '(-e --edit)'{-e,--edit}'[Edit commit message]' \ '(-f --force)'{-f,--force}'[Force certain operations]' \ '(-F --fetch)'{-F,--fetch}'[Fetch the upstream content first]' \ - '(-M --method)'{-M,--method}'[Method when you join, valid options are '"'"'merge'"'"' or '"'"'rebase'"'"']:M' \ - '--Default[is '"'"'merge'"'"']' \ + '(-M --method)'{-M,--method}'[Join method: '"'"'merge'"'"' (default) or '"'"'rebase'"'"']:M' \ '(-m --message)'{-m,--message}'[Specify a commit message]:m' \ + '--file[Specify a commit message file]:file' \ '(-r --remote)'{-r,--remote}'[Specify the upstream remote to push/pull/fetch]:r' \ '(-s --squash)'{-s,--squash}'[Squash commits on push]' \ '(-u --update)'{-u,--update}'[Add the --branch and/or --remote overrides to .gitrepo]' \