Coder Social home page Coder Social logo

hpi-swa / squot Goto Github PK

View Code? Open in Web Editor NEW
57.0 9.0 28.0 8.48 MB

Squeak Object Tracker - Version control for arbitrary objects, currently with Git storage

License: Other

Smalltalk 99.99% StringTemplate 0.01%
smalltalk squeak git version-control version-control-system object-tracking versioning

squot's People

Contributors

codezeilen avatar corinnaj avatar fniephaus avatar j4yk avatar leonbein avatar leonmatthes avatar linqlover avatar marceltaeumel avatar shirleynekodev avatar tom95 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

squot's Issues

Design API for diffs

Working with diffs instead of whole snapshots should speed up regular operations such as saving new versions.

Add feedback button

Author: Fabio Niephaus

Message:
It would be great to be able to provide feedback straight from the UI. Maybe you can find someone to add this feature for you, while you are busy implementing more important features... ;)

Choose from which remotes to fetch

Author: Fabio Niephaus

Message:
Instead of fetching from all remotes, the user could be ask from which remote to fetch when clicking the Fetch button. Everything could be selected in the list by default, so one also needs to click ok to fetch from all

Keep untracked files when merging

Untrack files also need to be merged into a branch.
Currently, "untracked" changes on a feature branch get lost when the branch is merged.

Keep a reflog for each SquotWorkingCopy that uses Squit

Since we do not use a traditional git working copy, there is no reflog for HEAD. To not lose track of what is being checked out or committed in in-image working copies, a reflog should be created for each working copy in the image.

How to name this reflog? Should there also exist a symbolic reference for this working copy? Look up how Gitless stores its heads (one per branch).

Test

Author: Fabio Niephaus

Message:
Test

MNU when pushing first commit

Author: Fabio Niephaus

Message:
Start a new project, add first commit, then push. This results in a MNU UndefinedObject>>parents in GitHistoryWalker>>visitCommit:. Apparently, the commit is nil...

Much garbage collection going on during history walks

During history walking, a lot of time is spent in the garbage collector. The code should be investigated to find places where objects can be reused or where objects are created unnecessarily. Also consider more aggressive caching.

File system errors

Author: @fniephaus

Message:
I am getting a lot of DirectoryDoesNotExist and Unable to open ... errors. Interestingly, it seems to be working for a short period of time. Once one of these errors occur, all future file system access operations fail. Reopening the image seems to "fix" this, but I'm getting an error again, as soon as I try to commit something :(

Packing the repository is broken

The resulting packfile is corrupt.

Workaround: do not pack the repository with FileSystem-Git. Use the regular git client instead.

Creating the packfile for push takes too much time

GitHub terminates the connection if nothing is supplied quickly enough. Pushing the first 361 commits of this repository did not work with FileSystem-Git. I had to use the non-Smalltalk git client instead.

Cannot push

(NeedGitCredentials for: url) signal does not do anything in my image.
Where do I have to add my credentials?

Squot-Update Button in the UI

There should be a button in the UI to temporary clone the Squot repo and load the latest master version from it, so the SWE students can easily update Squot&Co.

The other path would be to package Squot&Co. as Monticello versions and provide those via the update stream. This would need at least a simple GitCommit --> MCVersion(s) conversion.

Add commit list menu entry that updates the loaded branch to the selected commit

Should be labelled "reset to this commit".

Do not touch the object memory, only do loadedHistorian version: theSelectedSquitVersion, to move the ref. This can be used to manually fast-forward the master to a remote tracking branch (origin/master), until a proper merge operation (with fast-forward capability) is implemented.

Merge menu items

Author: Fabio Niephaus

Message:
Add menu items for merging to branch and commit list

Sort object list

Author: Fabio Niephaus

Message:
This would help reading the list

GitHub may close the connection on pushes

I did push successfully twice to GitHub with FileSystem-Git today, but for some sets of commits, GitHub simply closes the connection after receiving a part of the pack content. For the same set of commits, both a local test server and Bitbucket accepted the push without issues.

Have to keep an eye on this to find out what is the cause.

Cannot fetch from remote

When I click fetch, I get an "Unknown stream code 32" error in readSideBandResponseIfData:ifMessage:ifError:ifZero:.
Also, I get an ConnectionClosed error when trying to submit feedback.
However, WebClient httpGet: 'https://google.com' works as intended. Not sure what is going on...

Use TreeView in Commit Dialog

A tree view would work well in the commit dialog.
It could be used to display per method changes per class. Maybe, you can also find a way to display all changes for a class or even one big diff for everything.

Cache pack file references during operations

While it is mandatory to allow the set of pack files to change over time, rediscovering them over and over during an operation such as walking the history is unnecessary. There should be a way to delimit an operation and cache the pack file references and the pack index files' content during that operation.

Adding a new package does not seem to work

Create a new class and add it to some new category. Then start a new project in the GitBrowser. Currently, you cannot add the category, because it does not appear in the package list. In my current image, I have replaced this list with the same list the Browser displays. However, when I add the newly created category, a new commit is empty. Have tried different things, can't get it working

Under Windows, file handles stay open even though the FSHandle instances are closed

Inspecting the VM process with Process Explorer revealed that the file handles for pack files stay open, even though the corresponding FSHandle instances are already garbage collected or closed, as far as the object memory is concerned.

@fniephaus can you please check if the same is true for Mac OS? Just work a while in your image and check the process after some git operations.

Snippets to find (officially) open files:

FSStream allSubInstances select: [:ea | (ea instVarNamed: 'handle') reference filesystem = FileSystem disk]

FSFileHandle allInstances select: [:ea | ea isOpen]

The tools to inspect the actually open file descriptors or handles vary by OS, of course.

Ensure HTTP(S) is used

Author: Fabio Niephaus

Message:
Since Squot does not support git+ssh at the moment, it would be good to somehow ensure a user can only enter HTTP(S) URLs.

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.