summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2 daysMove repository condition indicator to beginning of default formatMatt Hunter1-1/+1
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>
2 daysUpdate default style of remote commits statusMatt Hunter1-7/+7
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>
2 daysAdd new prompt output element "missingups"Matt Hunter1-4/+20
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>
8 daysRemove source file banner commentsMatt Hunter1-7/+0
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>
8 daysRemove in_current_dir check during dot_git()Matt Hunter1-14/+1
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>
8 daysRemove is_cwd_a_dot_git_directory check during stash statusMatt Hunter1-16/+4
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>
8 daysRework option parsing and drop extraneous calls to is_repo()Matt Hunter1-38/+35
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>
8 daysMerge branch 'precheck'Matt Hunter3-11/+120
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
8 daysAdd new prompt output element "condition"Matt Hunter1-4/+20
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>
8 daysUse git-precheck to determine if we are inside a repositoryMatt Hunter1-5/+2
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>
8 daysAdd git-precheck scriptMatt Hunter2-2/+98
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>
8 daysRemove shell-specific options from README examplesMatt Hunter1-21/+7
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>
2025-04-13git-sonar v0.8.1v0.8.1Matt Hunter1-1/+1
Signed-off-by: Matt Hunter <m@lfurio.us>
2025-04-13Fix potential installation problems with odd file permissionsMatt Hunter1-1/+1
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>
2021-08-24git-sonar v0.8v0.8Malfurious1-0/+3
Signed-off-by: Malfurious <m@lfurio.us>
2021-08-24Update README for new releaseMalfurious1-74/+18
Signed-off-by: Malfurious <m@lfurio.us>
2021-08-24Add explicit --help outputMalfurious1-34/+15
-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>
2021-08-23Remove dead codeMalfurious1-119/+0
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>
2021-08-23Remove unit testsMalfurious19-4211/+0
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>
2021-08-04Properly Reset Colors After Stash Statusdusoleil1-1/+1
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>
2021-08-04Add Control Characters back to Color Config to Fix Line Wrappingdusoleil1-18/+19
"\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>
2021-08-02Rewrite MakefileMalfurious1-28/+20
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>
2021-08-02Merge sonar-base into git-sonar main fileMalfurious2-630/+632
The script is now contained in a single file. This file will be cleaned/refactored over time. Signed-off-by: Malfurious <m@lfurio.us>
2021-07-22Refactor fetch.shMalfurious3-15/+2
Some code is restructured to remove the need for this additional entry-point. Signed-off-by: Malfurious <m@lfurio.us>
2021-07-20Merge bash/zsh/fish color modes togetherMalfurious4-92/+26
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>
2021-07-20Remove editor-specific gitignoreMalfurious1-2/+0
Signed-off-by: Malfurious <m@lfurio.us>
2021-07-20Move test files to subdirectoryMalfurious19-0/+0
Signed-off-by: Malfurious <m@lfurio.us>
2021-04-25Remove imagesMalfurious14-0/+0
Signed-off-by: Malfurious <m@lfurio.us>
2021-04-25Apply several suggestions from shellcheckMalfurious5-82/+104
Signed-off-by: Malfurious <m@lfurio.us>
2021-03-24Merge branch 'rebranding'v0.7Malfurious18-48/+48
2021-03-24Rename files to git-sonarMalfurious3-0/+0
Signed-off-by: Malfurious <m@lfurio.us>
2021-03-24Update references to project name to git-sonarMalfurious17-48/+48
Signed-off-by: Malfurious <m@lfurio.us>
2021-03-24Fix issue with test-colors 'git pull' commandsMalfurious1-2/+2
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>
2021-03-24Merge branch 'hotfix/unittests' of https://github.com/cbandera/git-radarMalfurious9-40/+70
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...
2021-03-24Merge branch 'feature/git-directory-patch' of ↵Malfurious1-2/+8
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.
2021-03-24Merge branch 'add_typechanged' of https://github.com/hallzy/git-radarMalfurious1-0/+8
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.
2021-03-24Merge branch 'master' of https://github.com/m007/git-radarMalfurious1-2/+12
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).
2021-03-23Merge branch 'switch-untracked-symbol' of ↵Malfurious5-115/+115
https://github.com/michaeldfallen/git-radar
2020-01-29Let the remote tracking branch be configurableMatthias Baumgarten1-2/+12
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).
2017-03-28Merge branch 'master' into hotfix/unittestsClaudio Bandera2-1/+6
2017-03-07Added TC for typechanged statusSteven Hall1-0/+8
2017-01-08fix for basename: extra operand warningcrf2041-1/+1
2016-11-02Merge pull request #106 from bogem/forMichaelMichael Allen1-0/+5
Add lightweight version to README
2016-10-24Add lightweight version to READMEbogem1-0/+5
2016-09-28Added additional checks for .git and sub-directories. This patch also ↵Richard Holmboe1-2/+8
includes using POSIX native commands and going away from basename/dirname
2016-04-24Merge remote-tracking branch 'upstream/master' into hotfix/unittestsClaudio Bandera5-124/+175
2016-02-03Fix '= not found' issueMichael Allen1-1/+1
2016-01-22Merge pull request #99 from hallzy/masterMichael Allen1-5/+11
Resolve issue #98 - Git stash error when entering .git Directory
2016-01-21Resolve issue #98Steven Hall1-5/+11
radar-base.sh now checks to see if the current directory is a .git directory. If it is, it skips the git stash part.
2016-01-07Merge pull request #97 from pkernevez/masterMichael Allen1-1/+1
Remove the '\n' that put the cursor on a new line (prompt on 2 lines instead of one)