Skip to content
This repository has been archived by the owner on Sep 9, 2022. It is now read-only.

SOM-Research/Gitana

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NOTE: Gitana has been archived and is not maintained anymore. We have deactivated the issue tracker as we cannot offer support either. The development status of our tools is declared here. Feel free to contact us for further information.

Gitana: a SQL-based Project Activity Inspector

Gitana imports and digests the data of Git repositories, issue trackers, Q&A web-sites and Instant messaging services to a relational database in order to ease browsing and querying activities with standard SQL syntax and tools. To ensure efficiency, an incremental propagation mechanism refreshes the database content with the latest project activities.

Gitana also provides support to generate project activity reports and perform complex network analysis.

Documentation

More information can be found on the Gitana documentation site.

Who is behind this project?

Licensing

Gitana is distributed under the MIT License (https://opensource.org/licenses/MIT)

Requirements

Gitana is developed on Windows 7 and it relies on:

Python and pip package manager can be set to be executed from Windows command line by adding to the Path environment variable the paths where Python and its scripts are installed. By default, these paths are:

C:\Python27
C:\Python27\Scripts

Installation

Installation of Gitana is achieved by executing the setup script.

$> cd <...>/Gitana
$> python setup.py build
$> python setup.py install

How to use Gitana

Gitana is developed and tested on Windows, thus the user mileage in other platforms may vary. Nevertheless, Gitana has been successfully executed on Linux (i.e., all its exporters and Git, GitHub, StackOverflow, Bugzilla importers).

Data gathering from an Eclipse project and report generation

from gitana.gitana import Gitana

CONFIG = {
            'user': 'root',
            'password': 'root',
            'host': 'localhost',
            'port': '3306',
            'raise_on_warnings': False,
            'buffered': True
        }

def main():
    g = Gitana(CONFIG)
    g.init_db("papyrus_db")

    g.create_project("papyrus_db", "papyrus")
    
    g.import_git_data("papyrus_db", "papyrus", "papyrus_repo", "...\\Desktop\\org.eclipse.papyrus")
    
    g.import_bugzilla_issue_data("papyrus_db", "papyrus", "papyrus_repo", "papyrus-bugzilla", 
                                 "https://bugs.eclipse.org/bugs/xmlrpc.cgi", "papyrus")
				 
    g.import_eclipse_forum_data("papyrus_db", "papyrus", "papyrus-forum", 
                                "https://www.eclipse.org/forums/index.php/f/121/")
				
    g.import_stackoverflow_data("papyrus_db", "papyrus", "papyrus-so", 
                                ['YOUR-TOKEN-1', 'YOUR-TOKEN-2', ...])
				
    g.extract_dependency_relations("papyrus_db", "papyrus", "papyrus_repo", 
                                   "...\\Desktop\\org.eclipse.papyrus")
	
    g.export_graph("papyrus_db", "./graph.json", "./graph.gexf")
    g.export_activity_report("papyrus_db", "./report.json", "./report.html")
	
if __name__ == "__main__":
    main()

Data gathering from a GitHub project

from gitana.gitana import Gitana

CONFIG = {
            'user': 'root',
            'password': 'root',
            'host': 'localhost',
            'port': '3306',
            'raise_on_warnings': False,
            'buffered': True
        }
	
GH_TOKENS = ['your-token-1',
             'your-token-2',
             '...']

def main():
    g = Gitana(CONFIG, None)
    g.delete_previous_logs()
    g.init_db("db_2048")
    g.create_project("db_2048", "2048")
    
    g.import_git_data("db_2048", "2048", "repo_2048", 
                      "C:\\Users\\atlanmod\\Desktop\\oss\\ants-work\\github-repos\\2048", 
		      import_type=2)
		      
    g.import_github_issue_data("db_2048", "2048", "repo_2048", "2048_it", 
                               "gabrielecirulli/2048", GH_TOKENS)

if __name__ == "__main__":
    main()

Gitana application(s)

Publications

  • V. Cosentino, J. L. Cánovas Izquierdo, J. Cabot, Gitana: A SQL-Based Git Repository Inspector, in: ER conf., 2015, pp. 329–343.
  • V. Cosentino, J. L. Cánovas Izquierdo, J. Cabot, Assessing the bus factor of git repositories, in: SANER conf., 2015, pp. 499–503.
  • J. L. Cánovas Izquierdo, V. Cosentino, J. Cabot, An Empirical Study on the Maturity of the Eclipse Modeling Ecosystem, in: MODELS conf., 2017, p. in press.
  • V. Cosentino, J. L. Cánovas Izquierdo, J. Cabot, Gitana: a Software Project Inspector. Science of Computer Programming, Vol. 153, pp. 30–33.