Coder Social home page Coder Social logo

petermolnar-dev / xit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from uncommon/xit

0.0 1.0 0.0 2.47 MB

Mac OS X Git GUI

License: Other

Objective-C 59.55% Swift 36.85% C 0.39% Objective-C++ 1.47% C++ 0.10% CSS 0.99% HTML 0.51% JavaScript 0.14%

xit's Introduction

Xit

Xit (pronounced "exit") is a graphical tool for working with git repositories. The overall goals are:

  • A useful graphical interface for viewing and managing your repository
  • Stability and scalability - handle large repositories well (lots of commits and lots of files)
  • A well-organized codebase to facilitate continued development

Background and current status

Xit began as a rewrite of GitX, born from a desire for a codebase that was easier to work with, thoroughly unit tested, etc. It is currently working towards 1.0 beta status, where all basic features are in place, with many more interesting features slated for the future.

Currently there are two major transitions underway: consolidating the user interface (originally there were separate history/commit/file tree views), and migrating to Objective-Git instead of the command-line tool.

Roadmap

The plan is to have a concrete 1.0 milestone to provide a good foundation and firm direction moving forward. Version 1.0 will simply be a starting point covering basic usage:

  • History view graph
  • Sidebar for navigating branches, remotes, tags, and stashes
  • Viewing the diff of a selected commit
  • Basic git actions: staging, committing, remote push/pull

Plenty of advancements are on the post-1.0 list, like syntax highlighting and other diff view enhancements, file history and blame views, etc.

Some other ideas that Iโ€™m looking forward to working on (and using!):

  • Interacting with git hosting services (especially GitHub): discovering forks, viewing commits online, working with pull requests
  • Interactive rebase
  • Explore more ways to navigate and visualize the repository

Development

Building

The repository uses several submodules, so you will need to clone the repository rather than downloading the source archive. To begin, get the submodules set up with git submodule update --init --recursive from the root of the project. You will also need CMake to build libgit2, and Homebrew for the other libraries used by Objective Git. If you hit any snags, please file an issue.

Note that Objective Git needs the objective-git/script/boostrap script to be run to configure everything. If Objective Git is later updated, you may need to re-run the script.

Contributing

If you're looking for a starter task, several issues have been marked "small". These should provide a relatively easy intro to the code base.

Swift is preferred for new classes, but not necessarily required. In particular, working with some C APIs can be awkward in Swift, so Objective-C is fine.

For larger tasks, there are two options:

  • Plenty of other ideas and plans have been written down in the Issues section. Feel free to comment and contribute there.
  • Just run the app and see what bugs you!

If you decide to start working on something, please add a note in the issue (file a new one if needed). When you're ready to share your work, please follow the usual procedure for a GitHub pull request.

Coding style

The coding style used is based on the Google Objective-C Style Guide, with the following changes:

  • Line length is 80 columns.
  • The opening brace of a function goes on its own line.
  • No single-line if statements, like if (x) return; (you can't set a breakpoint on that return!)
  • No space before * when it is not immediately followed by an identifier, such as (NSString*).
  • When wrapping function/method calls, a four-space indent may be used instead of aligning with the : or (.
  • Variable declarations are separated from other statements by one blank line.
  • Whitespace at the indentation level of the surrounding lines is allowed.
  • Doxygen style comments are encouraged because Xcode parses them.
  • Explicitly compare values with 0, nil, or NULL. Only write if (x) if x is a Boolean value.

Some of the code was written before these rules were put in place and may still need to be updated. Feel free to correct any instances you find.

xit's People

Contributors

laullon avatar uncommon avatar mjcuva avatar nerandell avatar rahdev avatar

Watchers

Peter Molnar avatar

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.