Skip to content

Conversation

@OdNairy
Copy link
Owner

@OdNairy OdNairy commented Oct 18, 2018

GPG feature implementation still in progress. However, you can download pre-built binary with modified bundle id by the next link:
GitUp prebuilt binary

GPG summary:

  • Commit
  • Edit message
  • Swap with parent
  • Squash with parent
  • Delete
  • Rewrite
  • Split
  • Undo/Redo

Update: On July, 3rd the branch was rebased on top of the latest upstream master.

@OdNairy OdNairy force-pushed the feature/gpg branch 3 times, most recently from 8f40793 to 3d5292e Compare July 3, 2020 19:05
gleich and others added 20 commits October 30, 2020 11:47
* 📄 Fill in license

* 💬 Change name

Signed-off-by: Matthew Gleich <email@mattglei.ch>

* 📄 Add description to license

* 💬 Align license description with repo description
* Xcode 12: Update to clang-format 11.0.0

* Xcode 12: Silence upgrade warnings

* Xcode 12: Requires iOS 9 minimum

* Xcode 12: Disable implicit ASi build
* macOS 10.13: Fix commit header bar colors

* macOS 11: Fix welcome window contrast in dark mode

* macOS 11: Fix alignment of "Also remove" accessory in reset alert

* macOS 11: Opt out of some inset table views

* macOS 11: Allow native separators in inset tables
It doesn't exit by [Spacebar], but it does by [Esc]
* macOS 11: Improve stage/unstage button contrast

* macOS 11: Annotating alerts with destructive actions

* macOS 11: Use native preference window

* macOS 11: Update toolbar design
* Update Sparkle to 1.24.0

* Rewrite framework scripts for ASi and xcframeworks

* Build new dependency xcframeworks

* Integrate ASi frameworks and enable build

* Remove old dependency builds
* Swap add and modify colors (blue <-> green)

* Update icons for Big Sur
This allows for local compilation, however our CI is still failing on code signing with newer Xcode bump.
Replace resize masks with auto layout constraints. Compiling on macOS 11 for backwards compatibility seems to break resize masks in the NSTableView context.
)

Adds -t and -h flags to the gitup CLI.
-t allows for repo to be opened in new tab
-h is an alternative to the help command.
When core.hooksPath is set, use it as hooks path.

Resolves git-up#613.
* Introduce GIImageDiffView files

This view will be used very similarly to GIDiffView, as both are
variably sized diffing cell contents.

* Attach GIImageDiffView to GIDiffContentData

Again, similarly to the approach used for GIDiffView, we are attaching
this content view to the diff data, so it can later be integrated into
a cell.

* Show a GIImageDiffCellView for image diffs

Once again, this is mimicking GIDiffView and the associated
GITextDiffCellView. For now we merely use the previously introduced
imageDiffView as a way to identify whether an image cell should be
shown.

* Allow GIImageDiffView to request a height

This will later be necessary to request enough height to display images
at their full resolution (or a fraction of that depending on width
constraints).

* Inject GIImageDiffView into GIImageDiffCellView

Following the example of GIDiffView, we attach (and detach) the content
view to a designated cell.

* Inject the repository into each GIImageDiffView

To be able to export blobs of images later on, we'll need access to
the repository. This commit lays the necessary foundation for that step.

* Pass along the GCDiffDelta to GIImageDiffView

Adds another necessary resource to be able to display images later on.

* Add an image view for the current (new) image

* Update the frame of the current image view

* Update the current image when the delta is set

This preliminary solution only covers showing the absolute newest
version of the file and is therefore usually wrong.
It does however establish the connection between delta, repository and
the final image.

* Avoid unnecessary image updates

* Show the proper new file for all cases

This code is very similar to the viewDeltasInDiffTool utility method, as
we are fundamentally doing the same thing (exporting the image file
referenced by the SHA1 value and then displaying it).
The most noteworthy detail is that we are defaulting back to the
canonical path for untracked files.

* Add the second comparison image view

* Position the old image view alongside the new one

* Display the correct old comparison image

This works analogous to the previously added updateNewImage method.
The major difference is that we are looking at the oldFile and there
is no fallback if it does not exist.

* Add a method to calculate the combined image size

The goal is to make the GIImageDiffView a slide style view image
comparison tool, in which the two images are displayed in the same
area, but hidden or revealed by sliding a divider across them.
This method allows us to calculate how big this combined area needs
to be.

* Add a method to calculate the comparison frame

This method is designed to work within a given frame and will return
a rectangle that will provide the correct dimensions to display
both the old and new image in a shared area.

* Move old and new image into the shared area

Currently this will overlay the old image over the new one. However,
this is only setting up for the ability to partially hide both images.

* Make the image diff view ask for the proper height

Instead of asking for a somewhat random, large height to fit the image,
we can now ask for exactly the required height.
To do this, we try to fit the image at full resolution, but scale down
according to width constraints if necessary.

* Add percentage to keep track of shown fractions

This property will be used to figure out how much to show of the old and
new image. A value of 0 will represent showing just the new image, while
a value of 1 will mean only the old image is shown.
Everything in between will move the divider in between accordingly.

* Reset the percentage when delta is updated

* Partially hide the images according to percentage

By using masking layers, we can easily hide parts of the old and new
images. Originally, we considered drawing the images directly, but the
draw calls turned out to be very slow. This mask layer solution seems to
be about four times as fast.

* Update the percentage according to mouse input

By adding gesture recognizers to the view, we can use the entire image
area as a large input field for the user to select the split between
the old and new image.
Whenever we change the percentage value we need to trigger a redraw.

* Avoid implicit layer animation

By default, changing a CALayer's frame causes it to animate to the new
position. This prevents that behavior, as we need the change to happen
as fast as possible.

* Show the entire new image if there is no old one

* Add a transparency background layer

This adds the commonly used checkerboard transparency indicator.
The pattern had already been used by the GIMapViewController, so no new
assets were necessary.

* Update colors on every draw call

In order to reliably obey dark mode, it seems to be necessary to
reassign the colors constantly.
We tried to handle it via viewDidChangeEffectiveAppearance, but the
behavior was unreliable.
Since we couldn't notice any performance downsides to reassigning the
colors with every draw call, we went with this solution.

* Add indicator borders

Another common design element in slide style image comparison tools are
red and green borders to separate old and new images.
This is a simple implementation of that, which once again reassigns
the colors on every draw call to handle dark mode properly.

* Add a divider line

The final common design element of slider style image comparison tools.
To further indicate where the old and new images meet, we add a thin
line right between them.

* Infer file type based on UTI

The previous approach of initializing an NSImage to figure out whether a
file is an image was questionable when taking large binaries into account.
This new solution uses the file ending to determine the uniform type
identifier of a file, which can be used to check for image files.

* Limit maximum size of images in memory

To ensure fast performance and a reasonable memory impact even for very
large image files, we now create thumbnails of a limited size.

* Restrict image diffing to NSImage compatible types

* Separate image loading and cell size calculation

To ensure maximum performance we now offload loading the image into
memory to a separate thread.
As we still need the image size to lay out cells properly, we query
just this information before starting to load the full image.

* Show the entire deleted image
lucasderraugh and others added 13 commits May 24, 2022 12:04
The issue was the following:
The bundle xctest couldn't be loaded. Try reinstalling the bundle.
Co-authored-by: Alejandro Mendoza <alejandromendoza@Alejandros-MacBook-Pro.local>
* Revert "Revert "Faster multiple file staging (git-up#629)""

683f6de

* Fix issue where repository wasn't notified of changes

* Remove `GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH` as checkout strategy option

* Escape paths to prevent them from being recognized as match patterns
@OdNairy OdNairy force-pushed the feature/gpg branch 3 times, most recently from 10aa199 to af7370c Compare September 23, 2022 11:38
The System Region leads to false positive
test failures in some regions
Supported operations:
* Commit
* Merge
* Cherry-pick
@OdNairy OdNairy force-pushed the feature/gpg branch 2 times, most recently from 96d073e to ac1ce50 Compare September 30, 2022 20:45
lolgear and others added 6 commits November 3, 2022 10:18
* kit: interface node mrc has been removed.

* kit: core repository reflog mrc has been removed.

* kit: core snapshot mrc has been removed.

* kit: interface graph view mrc has been removed.

* kit: macos target has been updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.