| Age | Commit message (Collapse) | Author | Files | Lines |
|
When both the %{condition} and %{remote} features are rendering at the
same time, the "!" looks a little out of place - as though the
checked-out branch has some issue, rather than the local repository.
Swapping their order, as well as adding a space for separation, is more
intuitive.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
The %{remote} prompt feature is updated to more closely match the
appearance of the %{local} feature. This includes defining a new blank
default master symbol.
This patch is only intended to establish new default values. The
symbols and colors involved with this feature should soon be fully
configurable.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
A previous behavior of the %{remote} prompt feature was to print
something like "git:(upstream⚡branch)" if the branch had never been
pushed to the remote. This patch addresses this case to both clean up
the prompt appearance and change the semantics of this warning.
In my own opinion, it is quite a normal workflow to be spinning off
local-only branches, whether they are short lived or not, and giving a
noisy warning that "branch" has no remote counterpart is distracting and
counter productive. However, a situation that _is worth_ warning the
user about is the case when a branch _has been pushed to a remote_ (eg:
it has a remote and merge-target configured), but this remote
counterpart branch was unexpectedly removed. This is when git-status
says "Your branch is based on ..., but the upstream is gone."
So, separate this specific warning into a new prompt feature:
%{missingups} (missing upstream), which simply shows the lightning bolt
character when a configured upstream branch is missing. Remove this
case from %{remote}, which is now quiet when the upstream is removed
(even if a remote-tracking branch is configured). This separation to a
new element makes it possible to still see this warning if opting out of
the remote-commits feature.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
When git-sonar was first forked from git-radar, effort was made to merge
the tool down to a single executable script which was installed in the
$PATH. At the time, that meant that some files were simply concatenated
together to form the 'git-sonar' script. These banner comments were
inserted to show the origin of each section of code.
Now, these comments are largely vestigial, and some work towards
refactoring the script even further has been taking place. Remove these
banner comments which are no longer serving any purpose.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
The working directory is never changed by this script, so the cached
path to the git dir should never become invalidated.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
All active code is now contained within an outer is_repo() check. This
prevents execution inside .git directories or bare git repositories.
Remove this redundant check.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
Rewrite option parsing such that all script operations are contained
within one is_repo() guard. Some bashisms are removed in the process.
Now that we check is_repo() up front, remove extra checks throughout the
script.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
Provide an additional entrypoint 'git-precheck', a new script intended
for use by other git-related scripts to determine the initial state of a
repository before continuing to do additional work.
git-sonar now leverages some of the information returned by git-precheck
to update its "is inside git repository" check, as well as provide a new
prompt string feature which visualizes on the prompt whether a merge,
rebase, etc. is in progress.
* precheck:
Add new prompt output element "condition"
Use git-precheck to determine if we are inside a repository
Add git-precheck script
|
|
Use git-precheck to determine if any ongoing git operation is in
progress and if so, mark the repository as being in a special condition.
This is made visible via a new feature in the GIT_RADAR_FORMAT prompt
string '%{condition}', which renders '!' when active.
Like most others, this element comes with its own configurable color.
By default, this is yellow, which is used for other 'conflicted' or
abnormal states.
This patch removes the unimpactful variable $output from render_prompt()
and replaces its use with $PROMPT_FORMAT - what it was initialized to.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
Use the more robust check implemented by the new git-precheck script,
instead of the previous dot_git() logic which checks for a ".git" folder
with fallback to git-rev-parse. There is still more work to be done
though in refactoring this area of the git-sonar script.
Due to the specifics of this new implementation, git-sonar will no
longer attempt to operate inside a .git directory or a bare git
repository. This makes more sense to me, since git-sonar is intended to
be an aid during active development work or branch management from
within a working tree. This also avoids some other issues and potential
edge cases within the script that fail to run properly in those
contexts.
git-precheck exits with a code of 3 or less if it successfully
determines we are inside a valid git repository working tree, so simply
assert this in the is_repo function.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
This is an alternative entrypoint primarily intended for use in other
scripts. The purpose of git-precheck is to easily determine the state
of a git repository before going on to perform additional, possibly
disruptive work.
git-precheck tries to cover as many bases as possible - odd cases like
'merge in progress', 'cherry-pick in progress', etc. By default, we
only exit success (0) if we are in a repo that is completely clean (no
file modifications or untracked files present) and has no ongoing
operation.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
The --bash/--zsh/--fish options were converted to no-op command line
flags a while back, since their behavior in git-sonar is identical.
They are merely still recognized for compatibility with git-radar.
This being the case, don't recommend their use in git-sonar's README
file.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
It is possible for git-sonar to be installed in such a way that it is
only executable by root. For example, by running `make install` after
checking out the git tree by a user with a restrictive umask value.
Use the install command in the Makefile to explicitly set the correct
mode bits of the installed git-sonar script.
Signed-off-by: Matt Hunter <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
-h or --help will now display the usage information on the command-line.
Additionally, -f is offered as a short form of --fetch. As a
consequence of this, it is no longer necessary to specify
--bash/--fish/etc. to get the prompt to render. (However, these options
will continue to be recognized by the script, for compatibility with
git-radar.)
The content of the help text is also updated for accuracy. Shell
specific examples are removed (see the README).
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Some code in the main script was only serving use in the (now deleted)
tests. Remove anything from the main file with no references to it.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
I don't particularly wish to maintain these tests for a few reasons:
* Many of them make assertions strictly about rendered text / UI
* Many of them test external systems and touch the disk
* There are platform-dependent details that complicate several
tests.
So, the tests are removed. Ideally, the main script is reworked into
something simple enough it doesn't necessarily warrant heavy testing.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
If a custom color is used for the stash icon, git-sonar needs to reset
the color after the icon. It was using the wrong variable for this
reset.
Signed-off-by: dusoleil <howcansocksbereal@gmail.com>
Signed-off-by: Malfurious <m@lfurio.us>
|
|
"\001" (Start of Heading) and "\002" (Start of Text) control characters
were mistakenly removed from the color config part of the main script.
Some shells (e.g. bash) struggle with line wrapping issues without
these. Bash needs them to calculate which characters are printable and
which aren't for figuring out where to linewrap.
This patch just adds them back in.
Signed-off-by: dusoleil <howcansocksbereal@gmail.com>
Signed-off-by: Malfurious <m@lfurio.us>
|
|
The Makefile is updated to deal with the single 'git-sonar' file only,
now that the others have been merged into it.
Additionally, several issues have been fixed with the file, including:
* Now easier to override the PREFIX variable (install location)
* PWD works properly when running make with sudo
* Install now default to system-wide
* bin directory now explicitly created if it doesn't exist
A specific problem corrected by this patch is that `PREFIX=$HOME/.local
make install` on a fresh system will no longer result in the script
being copied to the _regular file_ $HOME/.local/bin, because bin did not
exist.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
The script is now contained in a single file. This file will be
cleaned/refactored over time.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Some code is restructured to remove the need for this additional
entry-point.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
This commit removes the differences between the supported shells and
removes the options: --bash, --fish, and --zsh.
I can not produce any problems in any of these shells using a generic
form of the text coloring (ie: the one bash was using), so for
simplicity I will opt to unify the way colors are handled and remove
knowledge of the running shell.
Something that _may_ end up being a problem is properly rendering the
prompt in different terminal emulators. If this is of concern, it will
be dealt with at a later time.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Signed-off-by: Malfurious <m@lfurio.us>
|
|
If the user's git is configured with 'pull.ff = only', these lines would
fail since the two repositories have diverged from each other. '--ff'
is added to restore the original default of allowing either a
fast-forward or recursive merge to take place. In reality, an implicit
3-way merge is being performed. All tests now pass.
Signed-off-by: Malfurious <m@lfurio.us>
|
|
Merge pending pull request #67 of upstream git-radar project from user
cbandera. They write:
This is a pull request to fix issue #38. As it turns out, some built in
commands behave differently on Mac OS X and Linux.
In order to run the tests on Linux, I have added switch statements at
some points to call the functions with the respective syntax.
Also I realized, that the tests only worked for me when I set the
following options:
git config --global push.default simple
git config --global branch.autosetuprebase never
But that's probably just because these should be the defaults. I
normally have them set to something else...
|
|
https://github.com/rholmboe/git-radar
Merge pending pull request #107 of upstream git-radar project from user
rholmboe. Note I did manually resolve a fairly trivial conflict in the
is_cwd_a_dot_git_directory() function. From the original PR:
Bug #98 wasn't really propagated correctly, you still got git-fetch bug
when you entered a sub-directory in .git. Now it's recursive, faster and
still POSIX compliant.
|
|
Merge pending pull request #111 of upstream git-radar project from user
hallzy. They write:
I came across "typechanged" the other day in my git status. It occurs
when (for example) you change a file from being a regular file, to a
symlink.
Not sure if you want this in. I am using "TC" in the terminal to show
this.
I would also like a check on the grep's in the lines that I added. I
understand that everything inside of the square brackets can be matched,
but I am unsure what letters I would also need with this.
|
|
Merge pending pull request #119 of upstream git-radar project from
user m007. They write:
This commit allows the user to define a per repository or per branch
specific configuration of which branch git-radar compares the current
branch to. If no branch is configured explicitly "origin/master" will
be used (being backwards compatible with the current behaviour).
A branch specific remote tracking branch may be configured by executing
git config --local branch."$(git rev-parse --abbrev-ref HEAD)".git-radar-tracked-remote origin/my-branch-to-compare-to
A repository specific remote tracking may be configured by executing
git config --local git-radar.tracked-remote origin/my-branch-to-compare-to
A branch specific setting will overwrite a repository specific
configuration (which will overwrite the default, i.e origin/master).
|
|
https://github.com/michaeldfallen/git-radar
|
|
This commit allows the user to define a per repository or per branch
specific configuration of which branch git-radar compares the current
branch to. If no branch is configured explicitly "origin/master" will
be used (being backwards compatible with the current behaviour).
A branch specific remote tracking branch may be configured by executing
git config --local branch."$(git rev-parse --abbrev-ref HEAD)".git-radar-tracked-remote origin/my-branch-to-compare-to
A repository specific remote tracking may be configured by executing
git config --local git-radar.tracked-remote origin/my-branch-to-compare-to
A branch specific setting will overwrite a repository specific
configuration (which will overwrite the default, i.e origin/master).
|
|
|
|
|
|
|
|
Add lightweight version to README
|
|
|
|
includes using POSIX native commands and going away from basename/dirname
|
|
|
|
|
|
Resolve issue #98 - Git stash error when entering .git Directory
|
|
radar-base.sh now checks to see if the current directory is a .git
directory. If it is, it skips the git stash part.
|
|
Remove the '\n' that put the cursor on a new line (prompt on 2 lines instead of one)
|