GithubHelp home page GithubHelp logo

gittank's People

Contributors

andriets avatar khrystyna-pelekh avatar kseniadovhanyk avatar roman-kosh avatar yuriy-pelekh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

gittank's Issues

BUG | MVVM: The 'Update' button is active while the action is running

The 'Update' button is not frozen while 'update' action is running, so what user can click the button once again and it causes a failure.

Preconditions:

  • A few repositories (e.g., more than 3) should be listed in the appsettings file.
  • Default repository should be selected.
  • The GitTank app should be opened.

Steps to reproduce:

  1. Click the 'Update' button.
  2. Try to click the 'Update' button once more while the action is still running.

Actual result:
The 'Update' button is active, user successfully can click the button once more, and failure happens.
Please, see the attachment: https://www.screencast.com/t/zr4Wy41NEFP

Expected result:
The 'Update' button should be inactive until the process is completed.

Multi repo setup and dependencies - wrap up basic ideas and flows

Representation of the repositories a developer expects to make changes to

  • Given that we have features like Repo status and Behind/Ahead status, it may be better to have all repositories always visible and not as a dropdown to visualize all kinds of "status" information. Edge case: 10+ repos
  • Also may be good to show branch in addition to repo to fit well with other features (since in some repos custom branch may be active and in other - tenant or develop one)
  • It may be convenient to mark repositories where changes were actually made (both committed and not committed)
  • Selecting repositories where developer expects to have changes is valuable mostly when creating a branch. It's better to make pull across all repos and make push across all changed repos regardless of whether developer marked all of them for work.
  • In some teams devs almost always work in the same subset of repos, but in other teams changes occur here and there from workitem to workitem. So it may be better to have a more flexible approach, e.g. a pre-defined subset of repos specified in configuration and on branch creation a window shown with pre-selected repos with possibility to override selection.
  • During development a change may be required in repo the developer didn't mark for change. He may create a branch in any other version control tool (git, sourcetree, etc.) How do we treat such case in our tool (it's not a problem if we follow ideas above, but open question otherwise)?

Add spinner / loading view for time when any operations / commands are running

Use case: user pressing some command like Create branch and the actions take some time (10-30 seconds). We must make sure that the user is aware that something is going on and that other buttons/commands are blocked from being used until the current command finishes with some success/failure result.

Parallel execution for commands across repos + flows for demo

  • Multi threading

  • Tab control for logs otherwise they can mixed due to parallel execution

  • Select flows for demo

  • Try basic commands according to flows selected

  • Provide parallel async execution for one command

  • apply the changes to all commands

  • adjust work with ProcessHelper to parallel execution

  • fix UI freeze

  • code improvements in scope of changes

  • adjust log representation to parallel execution

  • testing

  • merge with new work form feature/commands and main

All Main Features gathered here as labels - use them on your stories

Current vision for the main features of GitTank

Repo status - Status for all 7 repos (signal green-yellow-red) - operations (Pull / Push - crashed or not?). Error handling - TBD
Behind/ahead - how the local branch differs from the default remote (same) branch or basis branch (to which it will merge)?
Multi-threaded operations From single-thread to multi-threaded operations in repos (enable multi threadedness)
Improved configuration → from current json (manual entry) to easy UI config/selection
Multi repo setup and dependencies - 7 repos → Initial setup (default) for all 7 repos, but:

  • Selection of what repos you want to work with in the current session
  • Select dependencies → Tree
  • Async - parallel
    Enable post-actions like Build, unit tests, etc.
    Logging - enable smarter logging logic, easier to read and understand

BUG | Checkout command is not started at the same time

Preconditions:
User should have several repos
At least two branches should be on each repo(main, branch_1

STR:

  1. Select branch_1
  2. Click the Checkout button
  3. Check the log for all repos if the command starts at the same time

AR: The command does not start at the same time

ER: The command should start in parallel (at the same time for all repos)

Improvements for logs functionality

  1. Date file - when we do any actions, PULL, there is no visibility of which repository is used for this command.
    image
  • Without internet: No errors in application log, the message command executed is shown(do we need message here: "You do not have internet"???). Try to include?
  • There is no log when close the app
  • Git branch should be after Application started - change order? Possibly yes
  1. Log file for each repository(see attachment)

  2. Improve error message from stacktrace(Error file) - find ways to trace it to our code instead of generic message (TBD - experiment)
    image
    image

  3. If source path is not correct(or empty) - Application is closed but there is no error in log file.

Fix Pull and Push behavior

PULL
You asked to pull from the remote 'origin', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

Failed (00:00:00.8517557 @ 5/5/2022 10:28:23)

PUSH
fatal: The current branch od_test has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin od_test

Failed (00:00:00.0635105 @ 5/5/2022 10:29:14)

Improve logs (multi tabs and coloring)

Improve the ways our log is displayed. Some ideas:

  1. Separate tabs for each repo
  2. Red and green for success/failure in logs to highlight them
  3. Tooltips next to each tab to see the checkmark (success) or exclamation point (nuances) for each repo

BUG | Inconsistency in messages about git commands

  1. No details about the cause of the failure when executing the 'fetch' command, if the folder is not a git repository or if the repository is not connected to remote. See attachment 1.
    image

  2. The 'Command executed' text is present at the beginning of each git message (it was not present in the app in the previous versions). See attachment 2.
    image

  3. 'Push' command: git messages are cut (sometimes) for successful action. See attachments 3-4.
    image
    image

SPIKE - Research and analyze separate logs writing in the app

We assume the multi-threading in the future for multiple repos.
For this case we want to separate logs for each of our 7 repos

Research some concepts fo visual representation (i.e. vertical alignment / tabs / new windows etc.)

Add the ability to configure log (describe)
Type of configuration = detalization of the log

BUG | Exception is thrown on the 'push' command

When the user clicks on the 'push' button the exception is thrown sometimes.
Repro for both cases: with some commits on local and without.
Assumption: it is repro when the user is inactive in the app for a while (wait for ~10 m and click 'Push').
Please, see the attachment:
image

Enable GitTank Config from inside the app

Make sure that instead of .json manual entry we can setup the flow from the app
-add new settings window
-add a selection of repositories based on the path to the folders in which they are located
-add a checkbox section to select the repositories that will be used
-add the ability to choose a default repository based on selected repositories
-add the default branch selection
-add a button to save data from the form that will be inactive until all required fields are filled in
-saving settings from WPF window in JSON format
-overwrite data in appsettings.json and update data in the main window
-structure code by using the MVVM pattern
image
image

BUGs related to Settings

Related story: #42

↑ 1) Repositories are duplicated if adding a new repo from the parent folder (v1.0.366):
Preconditions:

  • C://ParentFolder/ChildFolder1](file:///C://ParentFolder/ChildFolder1);
  • C://ParentFolder/ChildFolder2/ChildFolder2.1](file:///C://ParentFolder/ChildFolder2/ChildFolder2.1) and
  • C://ParentFolder/ChildFolder2/ChildFolder2.2](file:///C://ParentFolder/ChildFolder2/ChildFolder2.2) exist

Steps to reproduce:

  • Add ChildFolder2.1 and ChildFolder2.2 > Save;
  • Add ChildFolder1.

AR: Repositories are duplicated with the incorrect path (see the attachments 'duplicates'.

ER: Repositories should not be duplicated.

⇅ 2) The settings window is not responsive (see the attachment 'FullScreen'), (v1.0.366)

↑ 3) Error is thrown when clicking the 'Save' button (testing the .exe file) (v1.0.366; v1.0.371): "System.IO.FileNotFoundException: Could not find file 'D:\appsettings.Development.json'."
Though the path to this file is: D:\1. WIP\GitTank\GitTank-1.0.371\appsettings.Development.json
(see the attachment 'FileNotFound')

↓ 4) The empty placeholder is available to select in the 'Default Repository' and 'Default Branch' dropdown (v1.0.371).
See the attachment 'EmptyBranch'.

↓ 5) The 'Remove' label should be without an ellipsis because this button doesn't open the separate window.
See the attachment 'Remove'.

Improvements in code design

  • Make MainViewModel.OnLoad async and call it from better place than constructor
  • add exception handling to commands and maybe other places
  • Create factory to get instances of ProcessHelper (testability)
  • use Fody
  • rename methods to contain Async in name?

Research Post actions

  • Compilation and additional options after the main actions
  • Separate component to test and check

Research Multi-repo usage and flows

Conduct a research and draw some workflows/schemas of actual day-to-day work based on the initial card: #28

  • Create basic workflows for single repo
  • Refine single repo flows
  • Convert basic workflows for multiple repo
  • Refine multi repo flows

BUG | MVVM: The log is not cleared before running the new action

The new logs are added to to previous list each time the new action is running. But the logs should be cleared before the new action.

Preconditions:

  • A few repositories (e.g., more than 3) should be listed in the appsettings file.
  • The default repository should be selected.
  • The GitTank app should be opened.

Steps to reproduce:

  1. Click any button, e.g., 'Branch'.
  2. Click another button, e.g., 'Update'.
  3. Check the logs.

Actual result:
The new logs are added to the previous ones.

Expected result:
The previous logs should be cleared, only the new ones should be shown.

Open terminal from the app

What for? To see the commands and outcomes?

If user has to handle situation outside of GitTank - provide the ability to open terminal with Git commands

Add small icon on repo tiles? Click on it - opens terminal in the correct directory of the dedicated repo
External terminal - research, up 2 engineer
Idea - find popular terminals, add ability to configure in settings? Env variable on Win machine. See what terminals are on win -> populate the dropdown in settings and save?? Overkill: select path in settings for the terminal

Refactoring the solution to MVVM

Set a new foundation via the new architecture

  • Research
  • Provide examples
  • Consult with colleagues
  • Refactor "on button click" to command
  • Decompose models to smaller and more compact
    PR: #2

BUG | The 'Branch' dropdown is empty after the first launching of the app

When running the application the first time after restarting the PC (run from Visual Studio or from .exe file), the 'Branch' dropdown is empty.
Although, all commands work as expected. There are no specific records in the logs.

Preconditions:
The appsettings file should be populated with correct data.

Steps to reproduce:

  1. Restart your PC.
  2. Open the GitTank.exe file.
  3. Check the 'Branch' dropdown.

Expected result:
The 'Branch' dropdown should contain all branches of default repository (according to appsettings).

Actual result:
The 'Branch' dropdown is empty.
Please, see the attachment: https://www.screencast.com/t/IwEH6CRaX

image

Repro: 1.0.34+
Workaround: close the app and open it again https://www.screencast.com/t/zUdKVEIU

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.