Comments (10)
The snapshots mechanism is effectively how the undo/redo stack works in GitUp. We write up to a limit of I believe 100 past operations. So I wouldn't be surprised if over time you eventually get a slowdown when we are persisting up to 100 snapshots.
I know you said that you've only had this repo on your computer for a month, but is it a large repo that was cloned from elsewhere?
As for things that we could try to remedy the situation is have a configurable max number of snapshots to persist. Then you can still have the undo/redo benefits but with a smaller history. Any other solution would involve writing individual snapshots out rather than a single binary blob (most likely alternative), or having the write occur on a background thread (more difficult), but both of these options have a number of implications.
I'd be interested to see if in a week or so you experience the same problem.
from gitup.
This is unfortunately a long-standing issue #415. Frankly it's not one that I've actually investigated yet.
Does your performance improve if you delete that path (.git/co.gitup.mac/snapshots.data
)?
from gitup.
Surprisingly it does, which is very interesting as the repo I use is rather new on my computer (about 1 month only).
from gitup.
Thank you for the explanation, yes, the repo is rather big, it was cloned directly from the server, but it has a lot of branches and tags.
I will get back in a week or so.
from gitup.
As we agreed, I am returning back with results. Delays on actions were gradually increasing during the week, so far the size of snapshots is about 500GB.
from gitup.
I've looked into the data and most of the plist contains references to tags:
![image](https://private-user-images.githubusercontent.com/4902794/259985678-cfc45bff-b938-44b5-909b-3c83df809813.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDg1MDQyMDAsIm5iZiI6MTcwODUwMzkwMCwicGF0aCI6Ii80OTAyNzk0LzI1OTk4NTY3OC1jZmM0NWJmZi1iOTM4LTQ0YjUtOTA5Yi0zYzgzZGY4MDk4MTMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDIyMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDAyMjFUMDgyNTAwWiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9NjNlYmMyNGI4YWVjYTc0OTQ0NWQyZDRmOGU0MzMxODZjODUwMDhkYzBhODNhYjk1OGMwYzQ4MDk1MjBjMDg1NyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.12otDfyCjbFqyXbSfLhwwiCI3C8piNF6dOIie-jWX5c)
from gitup.
500GB or MB? I certainly hope MB 😅. I think as an easy stopgap we could add a customization on the limit for snapshots, effectively limiting your undo stack. Otherwise I think it's a rework of the snapshot mechanism that frankly I don't have the time to maintain.
I think customizing the limit would allow you to use most of GitUp with easy. Out of curiosity if you browse snapshots (command-S) about how many would you say you have?
from gitup.
500MB, my bad (:
I have about 60 snapshots now, it is not much.
I have a question tho, why snapshot data contains information about all the tags? Most of them years old.
from gitup.
Ya, the problem is that the snapshots are exactly that, they are entire snapshots of the repo at a given time. So if you want to go back to the state of the repo yesterday, you can do that, but of course that means we need a way to get you there. Now of course a different approach that would be more efficient space wise is to have a diff of the repo, but I'm not sure of a practical way that can be done with what has been written so far.
If it is indeed tags that are really taking up the space for you, potentially git clone <repositoryUrl> --no-tags
or deleting local tags git tag -d $(git tag -l)
would improve the performance (though I assume you use tags yourself). You can also fetch a limited set of tags, but you have to then be careful as git fetch
will pull down all tags at any given time. We could potentially have "limited snapshots" where we don't snapshot everything and allow the snapshots to be essentially sub-snapshots of the repo.
from gitup.
I'm not using the Snapshots feature at all, is it possible to make a product version without the snapshots, but that's super snappy?
from gitup.
Related Issues (20)
- [Feature Request] horizontal map view wrapping HOT 2
- [Feature Request] annotate time units in map view HOT 3
- [Feature Request] persist commit bubbles in map view HOT 2
- [Feature Request] Enable "Search Repository" in stash and commit views
- Option to hide tags HOT 2
- Trim space characters in the clone bar
- [Question]Some files always show deleted in GitUp only.
- Add a "Stash" menu HOT 2
- Explain blue dot on "pull" button
- Branch names are rendered out of the viewport HOT 1
- gitup isn't compatibe with LFS? HOT 3
- Is gitup available in ubuntu 18, 20, 22? HOT 2
- Error on pushing to GitHub: SHA-1 Key HOT 6
- Ability to delete a currently selected local HEAD branch
- Prune local branches for which no remote branch exists anymore HOT 1
- Ability to go back if merge has been cancelled accidentally
- Cherry-pick a group of commits onto another branch
- VirusTotal marked installer as malicious HOT 2
- GitUpKit ssh credentials callback does not handle username correctly if it is defined in ssh config
- Bug: Impossible to clone another repo when a merge with conflicts is in progress
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gitup.