Giter Club home page Giter Club logo

abaptimemachine's Introduction

abapTimeMachine

Quality Gate Status

abapTimeMachine provides a simple way to look at past versions of classes, function groups, etc, as a whole (as opposed to the crappy native include-oriented approach). Alternatively, it also partially emulates git-blame by showing "what revision and author last modified each line of a file" for any given version.

Why

ABAP's versioning system is unbelievably bad. There is no native way to see how a whole class or a whole function group were at a given time in the past. Besides, it makes it very hard to find out which user was responsible for which changes. abapTimeMachine is here to solve both these problems.

How

Please read the Wiki to learn how to install and use ZTIMEMACHINE.

Requirements

  • ABAP Version: 7.40 or higher
  • abapGit

FAQ

For questions/comments/bugs/feature requests/wishes please create an issue.

Credits

  • Most code by Nuno Godinho
  • Diff algorithm and syntax highlighter parcially copied from abapGit

abaptimemachine's People

Contributors

larshp avatar lingcsun avatar nununo 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  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

abaptimemachine's Issues

Missing active version

The versions in VRSD are not enough. We need to get the active (and maybe the modified?) version.

Add list of requests

So that we know in which requests this object is involved

  • Request
  • Request description
  • Number of lines
  • Percentage of lines

Add list of contributors

It will provide a quick view of who was involved on coding this object.

  • username
  • name
  • number of lines
  • percentage of lines

Encoding has issues

If a name (user name for example) has some special characters those are missed:

Expected Result: Jérôme
Current Result: Jérôme

Add link to source on each part title

CALL FUNCTION 'RS_TOOL_ACCESS'
    EXPORTING
      operation           = 'SHOW'
      object_name         = i_object_name
      object_type         = i_object_type
    EXCEPTIONS
      not_executed        = 1
      invalid_object_type = 2
      OTHERS              = 3.```

Give priority to task owner instead of TR owner

Consider using the task owner instead of the TR owner. Sometimes, especially when the TRs are managed by Solution Manager, only the tasks (not the TR) are owned by the developer. In these cases the results will be misleading as the changes will be attributed to some functional person who was not the actual developer.

This is complex since nothing prevents a TR from having multiple tasks with different developers with overlapping objects. Some decisions will have to be made on how to address this.

no blame reported

Just installed, running it against my own fork of abap2xlsx.

ZBLAME says I'm the only developer and all files appear as 100% mine, for example against zcl_excel_worksheet.clas.abap:
immagine

If I clone the repo on my Linux desktop and run "git blame" on the same class I get a reasonable output:
immagine

Please tell me I am missing some very obvious point! I've tried fiddling with the date / time parameters but no luck.

Add progress bar

Since it can take a long time... add a progress event and use it to display a progress bar.

Implement Class

  • public, protected, private, test classes, etc
  • method includes

Add some metrics after the code

Somes possible metrics:

  • Total number of lines (total and without comments)
  • Number of parts
  • Number of surviving versions
  • Concentration rate?
  • Date oldest, date newest, lifespan

ITAB_DUPLICATE_KEY in zcl_blame_parts->get_requests

Hi,

we have received a ITAB_DUPLICATE_KEY dump while zcl_blame_parts->get_requests( ) is called by zcl_blame_parts->get_data().

rt_request = VALUE #( BASE rt_request               
       ( request = <t_group>-request                    
         description = NEW zcl_blame_request( <t_group>-request )->description               
         author = <t_group>-author                            
         name = <t_group>-name                             
         line_count = lines( t_request )                             
         blame_percentage = lines( t_request ) / lines( t_line ) ) ).

It seems that our task for each user is not considered here. Hence I have locally changed the primary key of the table type zblame_request_info_t and appended the field author as well. Not sure if this is really correct, but the task is not part of the table.

Regards,

Allow for multiple files in the output

Currently the output only shows one file. In order to implement the Class and the Function Group, which are comprised of multiple files, the output must be able to display multiple different source files.

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.