Code Monkey home page Code Monkey logo

merge's People

Contributors

fichtefoll avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

merge's Issues

Compact tree for branches from same base commit

I have many branches with the same base commit. In the commandline it is drawn like this:

image

It does not take up much horizontal space as each branch is only indented one level.

In Sublime Merge, it looks like this:

image

It takes up a lot of horizontal space as each branch is indented one level more than the last.

Could a more compact tree be drawn in the commandline style?

Show stashed untracked files in stash view

The stashed diff view is really nice, but it's missing untracked files in a stash (i.e., if one had stashed untracked files using git stash -u).

It is possible to see them via the git CLI, as they're the 3rd parent of the stash commit - i.e., git show stash@{0}^3 will show them). It would be great if SM showed them too, by default together with tracked file changes of the stash commit.

Partial stash

It would be nice if there were a way to do a partial stash (git stash -p) much like staging (lines, hunks, and files).

Scroll speed is very slow

When scrolling, it seems that SM only scrolls by a single line for each tick, which feels very slow. The same applies to horizontal scrolling with Shift hold.

I'm using Arch Linux.

Opening a new repo with command palette open causes it to stick

If you open a new repo whilst having the command palette open on an existing window, the new window will have the command palette stuck open and unable to be removed.

Steps to reproduce:

  • Open a sublime merge window
  • Open the command palette
  • Open a different repo using Command + Shift + O

Results:

  • The command palette will be stuck open

MacOS: v10.14
Sublime Merge: Build 1075

Request: Add UI actions for git flow

We use git flow exclusively and I can't see us being able to move to Sublime Git without this being a feature.

Here is a screenshot copied from my current client of how it manages it:
gitflowmenu 2018-09-21 08-07-24

Rename Branch new name erased on backspace

When renaming a branch the new name option is pre-filled with the same name as the target branch, but is not editable. If you press Backspace the entire name is deleted.

rename branch

I would expect it to be like this, or convert to this when Backspace is pressed:

rename branch - expected

Symbolic Link handling on Windows

Git on Windows by default turns symbolic links into text files with the target path in them. In Sublime Merge, they then get shown as changed files (type change from sym link to file) whereas git status doesn't show any changes.

Because git assumes that everything is actually fine, staging or discarding the changes will result in nothing happening, so these kinds of files will pollute the staging area. This is especially a concern with mixed macOS and Windows code bases with macOS frameworks checked in, since they always contain some symbolic links.

Ideally, Sublime Merge should not show these files as changed just like git.

Display a summary of changes

It would be nice if there was a summary of lines added/changed/deleted for each file in the commit view, as well as overall.

Respect LC_TIME

I use LC_TIME=en_DK.UTF-8 for ISO dates.

For me, SM displays Wed, 19 Sep 2018 4:30 AM in timestamps for commits in the commit view, and Wed 4:30 AM in the commit history. I don't fancy the 12-hour format.

Hang when closing a specific repository window.

Sublime Merge hangs when it closes the window for a specific repository. It also hangs when trying to switch repositories from that repository to another, since that repository is what it is opening when it starts this is particularly troublesome.

System Information:
macOS High Sierra Version 10.13.6
MacBook Pro (Retina, 15-inch. Mid 2015)
Processor 2.8Ghz Intel Core i7
Memory 16 GB 1600MHz DDR3
Graphics Intel Iris Pro 1536MB

Sublime Merge Information:
Version 1058 and Version 1061

When I tried to close a somewhat large repository (called Rune), Sublime Merge hung and refused to close. After some time, I used force quit and that resulted in the first error report (err_rep1.txt). I then reopened sublime merge, opened another repository and then tried to close the Rune repository. Sublime merge again hung and had to be force quit (err_rep2.txt). I then opened Sublime Merge, checked for updates, updated to build 1061, opened another repository and attempted to close the Rune repository, again it hung and I had to force quit it (err_rep3.txt). Finally I tried using switch repository to switch from Rune to another repository. Again Sublime Merge hung and had to be force quit (err_rep4.txt). A bit more testing shows it has no problem closing the window of the second repository, only when closing the window holding the Rune repository.

Unfortunately, since Sublime Merge is opening the Rune repository whenever it opens, I need to change the path to the repository that makes Sublime Merge hang so that the Sublime Merge does not open it on start.

err_rep1.txt
err_rep2.txt
err_rep3.txt
err_rep4.txt

Show branches in a tree view

It would be quite useful if branches were displayed in a collapsable and expandable tree view. Some remotes might have a lot of branches that you don't want to see all the time despite having them available, or you might be using git flow (or a different workflow) where you group branches into families by using common prefixes before a forward slash. I use this to group my pull request branches, for example.

See the following image for an example from SmartGit:

2018-09-20_23-01-29

Better support for git submodules

Enhancements for git submodules:

  • When checking out a branch, submodules should be updated (i.e., git submodule update)

  • There does not appear to be any way to change a submodule's commit other than by doing so in the git CLI, at which point it will then show up in SM as a submodule change that can be staged+committed for the main repo.

Staging and discarding multiple files at once

This might be another case of me missing something, but it would be nice if it was possible to select multiple files and/or lines at once and stage/discard them with one click. Ideally I'd also like a "Select All" that just let's me select every change and just stage it.

Take for example a look at Tower, where I have changes to 3 files and two selected at once:

Tower selection screenshot

I can do bulk discarding this way or alternatively checking the checkbox of any of the selected files will automatically stage all selected files (and vice versa, un-checking the checkbox would unstage all files)

There's also a very convenient "Stage All" button in the UI to stage every single change.

Allow smerge to be used as editor for git-difftool, git-mergetool

Still use the command line a lot...would like the ability to use it as the editor that I have set for git difftool and git mergetool (or the -t option to the git diff and merge commands). See the "-t <tool>" section of:

https://git-scm.com/docs/git-difftool
https://git-scm.com/docs/git-mergetool

ln -s /Applications/Sublime\ Merge.app/Contents/SharedSupport/bin/smerge /usr/local/bin/smerge
sudo launchctl config user path "/usr/local/bin:$PATH"

Command Palette can grow very big horizontally

I don't know if it really needs to be this big when using SM in fullscreen, but with keybindings and the respective git command being right-aligned it's quite hard to figure this out.

2018-09-20_23-05-25

This is on a WQHD screen with 2260x1440 pixels.

Option to show whitespace

I'd like to be able to see whitespace characters rendered always (or only leading) as opposed to only when selected. Currently, this doesn't appear to be possible.

Changing casing in a windows path breaks staging

If you have a folder that changed case in windows the tracked/untracked files will show wrong files and stage won't work since git for windows won't stage things that hasn't changes.
Repro steps:

mkdir gitTest
cd gitTest
git init
mkdir WrongCAsed
cd WrongCAsed
echo test > test.txt
git add .
git commit -m "Test"
cd ..
rename WrongCAsed WrongCased
cd WrongCased
echo test > test2.txt
git add .
git commit -m "Test2"

open Sublime Merge and look at Changes displayed and how the Stage button doesn't work

NOTE: Also posted on the forum https://forum.sublimetext.com/t/windows-paths-with-casing-can-break-staging/39221/1

Commit message length

  • It would be nice if the length of the commit message can be displayed.
  • And even nicer if rulers can set (eg. at 72 characters). (see #15 (comment))

Unmodified submodules marked unstaged

Sublime Merge is marking a bunch of submodules as being changed, even though they don't have unstaged changes and haven't been changed to a different commit. git on the command line does not list them as changed. Pressing "Stage" in Merge removes them from the screen (IE, they do not move to the Staged area, they just disappear) but refreshing or restarting Merge puts them back in place.

I'm on macOS 10.13.6 and Sublime Merge build 1058. IIRC this was working fine on yesterday's build.

I've witnessed this problem on two different repos.
I tried to reproduce by adding a submodule to a brand new repository, but everything worked fine there.

untitled

Command line git:

$ git status
On branch jason/ios12
Your branch is ahead of 'origin/jason/ios12' by 1 commit.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

    modified:   <<redacted A>>
    modified:   <<redacted B>>
    modified:   <<redacted C>>
    modified:   <<redacted D>>
    modified:   <<redacted E>>
    modified:   <<redacted F>>
    modified:   ../submodules/<<redacted G - does not appear in Sublime Merge>> (modified content)

no changes added to commit (use "git add" and/or "git commit -a")

$ git submodule
 8dd19b95d7efa96c7bd3ba37ac6c457b98ead620 ../submodules/ACTabScrollView (v0.2.6-25-g8dd19b9)
 e0070a9ecc6a624e7053b676ff1670e876eb17f5 ../submodules/AFNetworking (2.6.3-1-ge0070a9)
 763ed24bf54f1d9ba1153429af47ce9801a4f728 ../submodules/CocoaLumberjack (2.0.2-183-g763ed24)
 2004eadfb2c0d782b59a3317466b726a9076c38b ../submodules/<<redacted X>> (heads/master)
 ad0eedc6296dd8880629da26132c8c1e91f08c6c ../submodules/EasyTipView (0.1.2-56-gad0eedc)
 983e7ad990e9902930126c00d3dc698aa8ad656e ../submodules/OvershareKit (1.3.1-33-g983e7ad)
 9b5e5890297b94a8b1a474ac7bf4c1b8c2e5f8d7 ../submodules/RFQuiltLayout (1.0.2-51-g9b5e589)
 b52b21c04115be64d9aa99b6cee10d27e1d27269 ../submodules/SwiftFSM (v1.0-1-gb52b21c)
 1fadc548c91ae7bf09f4029f535439e1eba56110 ../submodules/TLYShyNavBar (1.0.1-29-g1fadc54)
 0c8a357c8418da2de1030ad85be504c992fca1b6 ../submodules/UPCarouselFlowLayout (1.1.1-2-g0c8a357)
 d74cf0a1a5443b5fb282c8e5faca729fb6c2f6b5 ../submodules/<<redacted G>> (heads/jason/iphone-x)
 9ccaa8ec796417c15517e88c32d58c78aaa00eea ../submodules/tensorflow (0.6.0-18584-g9ccaa8ec7)

Debug file from Sublime Merge

Problems with .gitignore settings

Ignoring directories specified within .gitignore (without tailing slash) sometimes fails.

bildschirmfoto 2018-09-21 um 00 43 45

.gitgnore contains the directory name 'dist' .
Even though the directory is listed in .gitignore, Sublime Merge is showing files within 'dist' as untracked.
Adding a slash ('dist' -> 'dist/') actually solves it.
Other directory names (eg. 'node-modules') are working properly without this hack and the files are ignored.
The command line version of git is working properly and does not show this behaviour

Debug information
MacOS X 10.13.6
=== App Version Information ===
Build: 1055

=== Git Version Information ===
Using Git: git
git version 2.17.1 (Apple Git-112)

=== Browse Page Information ===
HEAD: db378b0b27ae0c0150a4f3f7807249b2d5d07683
Is in merge: 0
Is in cherry_pick: 0
Is in rebase: 0
Is in revert: 0

=== Git Status Information ===

=== Our Status Information ===
?? dist/index.umd.js
?? dist/index.umd.js.map
?? dist/index.umd.min.js
?? dist/index.umd.min.js.map

=== Git Config Information ===
branch.master.merge=refs/heads/master
branch.master.remote=origin
core.bare=false
core.excludesfile=/Users/.../.gitignore_global
core.filemode=true
core.ignorecase=true
core.logallrefupdates=true
core.precomposeunicode=true
core.repositoryformatversion=0
credential.helper=osxkeychain
remote.origin.fetch=+refs/heads/:refs/remotes/origin/
remote.origin.url=https://...
...

=== Our Config Information ===
Git Config Path Information
Using config path: /etc/gitconfig
...

Our config output is different to the Git config output
branch.master.merge=refs/heads/master
branch.master.remote=origin
core.bare=false
core.excludesfile=/Users/.../.gitignore_global
core.filemode=true
core.ignorecase=true
core.logallrefupdates=true
core.precomposeunicode=true
core.repositoryformatversion=0
remote.origin.fetch=+refs/heads/:refs/remotes/origin/
...

=== Git Attributes Information ===
git check_attr --all output

=== Our Modified Files Newline Normalisation and EOL Information ===

Allow copying of commit hashes

When viewing a commit, it's impossible to copy any of the hashes (hash of the commit itself or any of its parents). This makes copying them to the clipboard impossible, which I've now come to realize I do semi frequently.

Ideally I'd like to be able to select the hash (or a partial subset of the hash), and copy it. Alternatively just being able to copy the hash in some different way would also work.

Show user avatars

It's much easier to recognize something based on its visual shape or color compared to actual text. The same applies to names, where it us usually much easier and faster to associate a commit to a person's avatar rather than their name, especially when skimming over the history.

Thus, I propose the option to have avatars displayed in both the commit history as well as the commit view, next to commit author.
You can easily see this in action on Github: https://github.com/sublimehq/Packages/commits.

SmartGit has a feature of looking up a person's avatar on gravatar based on their email address, for example. If there is none, you could display a colored placeholder with initials.

Example interface from SmartGit:

2018-09-20_22-37-10

Make clickable links distinguishable

2018-09-20_22-38-18

When looking at a commit, it is hard to make out which of the hashes are clickable. Especially the tree view should be more prominent since it's not just navigation but an entirely separate feature.

When pre-commit hook fails, commit message is lost

I use a pre-commit hook to perform linting checks. When an issue is found and the hook exits with a non-zero status, SublimeMerge correctly detects the issue and reports the hook failure, stopping the commit. However the commit message is cleared. It would be nice to preserve the message for the next commit attempt.

Possible problems running on CentOS 7?

First, thanks for releasing this! I've been getting by with a blend of gitg, IntelliJ and Git from the command line up until yesterday to reproduce my SourceTree workflow from my macOS days. :)

Problem

Seeing weird issues running Sublime Merge on CentOS 7, specifically:

  • commit list is missing the branch local/remote tracking badges for repos that are definitely tracking remotes
  • one repo listed 30+ files as having been modified and staged (that I hadn't actually modified or staged) while git status reported a clean working tree. Expanding the row for each file showed the "no content" placeholder. Clicking Unstage just made the row flicker for a split second but it remained staged.
  • after deleting and re-cloning the repo mentioned above, SM either crashes when I try to open it or truncates everything beneath the latest commit and lists no file changes under it

I'm assuming it's because the version of git that that ships with CentOS (1.8.x I believe) doesn't like one or more of the commands being passed to it. I'm not seeing any of those issues on my Fedora 28 machine (git 2.17.1).

Attempted fixes

  • deleted ~/.config/sublime-merge/Cache a bunch of times and restarted
  • deleted the files in the repo that SM was reporting and git checkout . to pull them back
  • git reset --hard at the repo root
  • delete entire repo from disk (deleting the SM cache folder again) and re-clone from command line (SM either crashes when I try to open the repo or truncates everything beneath the latest commit and lists no file changes under it)

Create Branch From Tag option

It would be nice if the Command Palette had an option for Create Branch From Tag... and Create Branch From Remote Tag... option.

Hide branches from Commit History

There needs to be a way to hide commits from branches in the commit history. Quite frequently, you want to focus on something specific and having all branches' commits displayed is certainly distracting.

#7 has a screenshot of SmartGit, where the tree view is displayed with individual checkboxes for the branches to be shown (and their commits).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.