Giter Club home page Giter Club logo

adt_frontend's Introduction

ABAP development tools plug-in for abapGit

Build Status

The ABAP development tools plug-in for abapGit is a Eclipse plug-in for the control of abapGit functionality via ABAP development tools.

Requirements

Download and Installation

Eclipse update site

The latest released version is available via a Eclipse Update Site. If you add the update site to your Eclipse installation you'll receice always the latest version.

Adding the Update Site to your Eclipse installation:

In Eclipse, choose in the menu bar Help > Install New Software and add the URL https://eclipse.abapgit.org/updatesite/

Limitations

Not all abapGit functionality is available with this plugin!

How to obtain support

Report Bugs via GitHub's bug tracking system.

A bug is a demonstrable problem that is caused by the code in the repository. Good bug reports are extremely helpful - thank you!

Guidelines for bug reports:

  1. Use the GitHub issue search — check if the issue has already been reported.

  2. Check if the issue has been fixed — try to reproduce it using the latest master or development branch in the repository.

  3. Demonstrate the problem — provide clear steps that can be reproduced.

A good bug report should not leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What would you expect to be the outcome? All these details will help to fix any potential bugs.

Contributing & Development Guidelines

See DEV-GUIDELINES

adt_frontend's People

Contributors

abinbaby-sap avatar absap avatar beckerwdf avatar gregorwolf avatar larshp avatar oleksiimalikov avatar sebastianwolf-sap avatar shubhamwaghmare-sap avatar sratz 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

Watchers

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

adt_frontend's Issues

Local Codacy Code Checks

Both PMD and CheckStyle are already integrated with Codacy, which means you can start using them right now.

Using Codacy means you’ll get all of these analyses done for you automatically every time you do a commit, plus a list of issues that are expansible to reveal additional detail on the particular problem and how to solve it.

https://blog.codacy.com/review-of-java-static-analysis-tools-5ad86cfc8ae2

There are 2 eclipse plugins available via marketplace:

With these plugins, it should be possible to test the source code locally and don't have to wait for the response of codacy on an open PR.

GUI ideas

Throwing ideas today...

I do not use Eclipse very much, and it was very easy to create a plugin view, since there is a template for it.

But I guess it will become annoying for users to always go to a different view, and without having seen it in action, I guess it is not totally transparent as to which project is selected in the view.

So perhaps something like this:

image

Which would add the possibility to add context menus to the "abapGit" node and each package, much like EGit does it,

image

APACK: Pull doesn't fetch dependent repositories

If a repository with dependent repositories (declared via APACK) is pulled, all dependencies are silently ignored which might cause inconsistencies.

Solution: If a pull is executed, APACK dependencies need to be evaluated, by default all dependencies should be pulled, too. The user needs to be able to ignore dependencies if requested (checkbox or something similar).

Guided Wizard for cloning of repositories instead of PopUp Dialog

Within a guided wizard it's easier to validate the input sources and better handle optional values, e.g. prevent the user to move to the next wizard step.
The Dialog closes if the user presses OK.

The idea of some guided wizard steps:

  • [Start Page] Insert Repo Url (validation if private or public)
  • [If private] next page would be input into user creds
  • Then choose a branch and package for cloning.
  • [Last Page] choose Transport Request or create a new one.

Object log after Pull/Clone action

Hi,

We thought about some kind of log screen with object status after the import.
Following details should be included:

  • Object Type
  • Object Name
  • Object Package
  • Which objects were imported successfully
  • Were there any errors / warnings?
  • Error / warning details
  • Filter, to search for warnings / errors

screenshot_2018-12-13_at_17 11 42

Pull process/popups

In abapGit for SAP GUI, the pull happens in ZCL_ABAPGIT_SERVICES_REPO=>GUI_DESERIALIZE.
Note that if a password is needed, this is entered by the user previous to the pull, as it is needed for calculating the status, which checks if a pull is possible or not.
Some of the objects types also have popups, this should be fixed in each serialization class.

Overwrite popup
Shown in case an object is modified locally after last pull
image

Package overwrite popup
If an object with identical name exists in an unexpected package
image

Unmet requirements popup
image

image

Transport required popup
image

Disable back navigation in pull wizard (Public repo)

  • Since pull wizard will land on a second page named 'Branch and Package selection' if a repository is public, we need to disable back button on that page.

  • In case of private repo where we need to input our credentials back & forward navigation should still be available.

Screenshot 2019-04-03 at 10 09 46

APACK Integration

The ABAP environment in the SAP Cloud Platform combines non-proprietary version-control management tools with the integration of abapGit as central tool for the lifecycle management of custom code. By using such open source technologies, there is now a unique opportunity for a whole community to create, use and build on open source libraries and applications for the ABAP environment. In order to enable the ABAP community to efficiently use the new possibilities of the new Cloud Platform environment, we will create a lightweight package and dependency manager – tailored to the needs of developers and organizations for application development for the Cloud.

Corresponding PRs:

See also:

IRepository: internal state

Some of the methods exposed to adt.ui via IRepository is state that is handled by the backend, eg setKey, setFirstCommit, setCreatedBy

Some others like setUrl, setBranch can be seen as operations on the repository that will call the backend, however, it will just update the values in memory on the frontend.

Or operations should be exposed via the IRepositoryService? Which then will take a IRepository as input?

This encapsulation is difficult, also in the ABAP backend where the ZCL_ABAPGIT_REPO_ONLINE class is too big, and some operations are hidden in random classes 😄

UI/UX Improvements

  • Integrate "My repositories" selection as a filter, so no additional backend requests will be needed.
  • Add missing icons and separators to context menu
  • Add user/password input population for urls that include such details. Example -> https://gituser1:[email protected]/repos/demo.git
  • Skip user/password step in pull wizard for public repositories
  • Prepare PoC for async calls in later updates

Error while installing

Get the following error while installing,

Cannot complete the install because one or more required items could not be found.
Software being installed: abapGit for ABAP Development Tools (ADT) 0.12.9 (org.abapgit.adt.feature.feature.group 0.12.9)
Missing requirement: abapGit ADT Back End Plug-In 0.12.9 (org.abapgit.adt.backend 0.12.9) requires 'bundle com.sap.adt.compatibility [2.106.1,4.0.0)' but it could not be found
Cannot satisfy dependency:
From: abapGit for ABAP Development Tools (ADT) 0.12.9 (org.abapgit.adt.feature.feature.group 0.12.9)
To: org.abapgit.adt.backend [0.12.9]

image

Finding the right ABAP project

The code

IProject[] abapProjects = AdtProjectServiceFactory.createProjectService().getAvailableAbapProjects();
IAbapProject abapProject = (IAbapProject) abapProjects[0].getAdapter(IAbapProject.class);

Assumes that the first project is an ABAP project, and this project is the active one

Perhaps something like
https://github.com/ceedee666/adt_transport_utils_plugin/blob/d7ebd917eed2d19bc124da3bd37a1caf59e880ee/eclipse-plugin/adt_transport_utils_plugin/src/de/drumm/adt_transport_utils/TransportOfCopiesRequest.java#L114
will work

@OleksiiMalikov

Folder / Project naming

As-is:
org.abapgit.adt.feature
org.abapgit.adt.site
org.abapgit.adt.ui
org.abapgit.adt

Suggest renaming
org.abapgit.adt to org.abapgit.adt.backend

And/or
org.abapgit.adt.ui to org.abapgit.adt.plugin.ui
org.abapgit.adt to org.abapgit.adt.plugin.backend

consider versioning

backend vs frontend

How to handle new/changed features in ADT_Frontend vs ADT_Backend

eclipse version supported

state in FAQ and/or readme.md

  • Vanilla ADT required
  • connection to backend required
  • ADT_Backend installed on backend

.gitignore file on project root level

There's no .gitignore file on project root level.
There a specific for each folder, but then we would need some kind of duplicate maintenance if a now file made his way on the .gitignore list.

Also all user specific config/files should be removed from the repo.

tips for debugging?

Hi,
Any tips for debugging the ADT_Backend when triggered via ADT_Frontend?
When I set a breakpoint, and there is a modal popup in eclispe, the code does not stop at the breakpoint.

Different repositories with same naming

I've got two repositories from two different users:

github.com/user1/repo
github.com/user2/repo

If user1 link and pull the content of his repo to a package user1.
user2 is not able to link and pull his repo.

Clone/pull

Hi,
In ZABAPGIT, the creation of repositories happens without automatic pull(https://github.com/larshp/abapGit/blob/master/changelog.txt#L169), this gives a better split of operations and error handling, plus gives the user an overview of what will happen before doing a pull, as object names are unique in ABAP(compared to cloing to a new folder in file system)

Currently it looks like both creation and pull is the same operation,

void cloneRepository(String url, String branch, String targetPackage, String transportRequest, String user,
			String password, IProgressMonitor monitor);

Pull is also split into 2 steps, in order to support a restful approach, see http://docs.abapgit.org/development/api.html, also see #7

Project Explorer integration

Under the system have a list of abapGit packages

Mark abapGit packages with special icon(like eGit)

Allow right clicking packages to open abapGit details for package

also see andau/abapCI#17

Error in MANIFEST.MF of adt.backend

There's an error in the MANIFEST.MF file of org.abapgit.adt.backend.
The required bundle org.eclipse.json;bundle-version="1.0.100" is not valid.

naming: firstCommit

I would guess the "firstCommit" to contain the SHA1 of the first commit to the git repository.
Instead it is when the repository was created in the ABAP sytem, suggest renaming to "createdAt"

				case "created_by": //$NON-NLS-1$
					repository.setCreatedBy(xmlReader.getElementText());
					break;
				case "created_at": //$NON-NLS-1$
					repository.setFirstCommit(xmlReader.getElementText());

Required .git suffix at the end of the git repo url

Hello,

We tried to use a AWS CodeCommit repo url without the .git suffix at the end, but we were not able to use that.

As far as I know the .git suffix at the end of the git repo url is just convention to indicate that the directory in question is a bare git repository. But I think it is not required.

From my perspective the .git suffix should not be required.

What do you think?

Regards,
Manuel

Allow every user to pull or unlink every repository

At the moment, it's just possible to perform modify operations like a pull or unlink on repositories that are cloned by the executing user. Hence this is not the best idea, if the cloned user will be ill, for example, no other user can execute a pull or smth.

Therefore every user should be able to pull, unlink every repo, regardless of which user it was cloned.

naming of plugin projects

Currently, the feature is separated into two plugins:

  • org.abapgit.adt (backend part)
  • org.abapgit.adt.ui (ui part)

At least org.abapgit.adt should be renamed to org.abapgit.adt.backend in order to highlight that there's backend functionality in it.

Another proposal would be:

  • org.abapgit.adt.plugin.<part>

HTML reuse

Okay, so ZABAPGIT uses HTML to render all frontend, can this be reused in Eclipse, and this a good or bad idea?

It will probably not have the Eclipse look'n'feel to it, but there would be no double work when implementing some of the frontend.

APACK: Multi-used packages not checked in wizard

Packages can be used multiple times in an APACK scenario. As a result, you get an error message when the wizard is completed. Multiple used packages should be prevented earlier in the wizard.

NullPointerException

Introduced with the latest version 0.12.8 multiple NullPointerException occurred.
If you press refresh to reload the list of repositories, an error dialog appears.
Bildschirmfoto 2019-03-11 um 15 18 05

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.