jskinner / merge Goto Github PK
View Code? Open in Web Editor NEWOld Community Bug Tracker for Sublime Merge
Home Page: https://github.com/sublimehq/sublime_merge
Old Community Bug Tracker for Sublime Merge
Home Page: https://github.com/sublimehq/sublime_merge
I have many branches with the same base commit. In the commandline it is drawn like this:
It does not take up much horizontal space as each branch is only indented one level.
In Sublime Merge, it looks like this:
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?
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.
It would be nice if there were a way to do a partial stash (git stash -p
) much like staging (lines, hunks, and files).
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.
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:
Results:
MacOS: v10.14
Sublime Merge: Build 1075
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.
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.
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.
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.
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:
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.
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:
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.
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"
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.
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
If files are using LF as the line ending on Windows, they are forced converted to use CRLF after resolving conflicts. This makes the whole file become different in the diff.
Source repo: reproduce.zip
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.
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)
Ignoring directories specified within .gitignore (without tailing slash) sometimes fails.
.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 ===
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.
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:
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.
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. :)
Seeing weird issues running Sublime Merge on CentOS 7, specifically:
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.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).
~/.config/sublime-merge/Cache
a bunch of times and restartedgit checkout .
to pull them backgit reset --hard
at the repo rootIt would be nice if the Command Palette had an option for Create Branch From Tag...
and Create Branch From Remote Tag...
option.
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).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.