Skip to content

Commit fca3d80

Browse files
committed
Initial commit
0 parents  commit fca3d80

File tree

242 files changed

+31338
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

242 files changed

+31338
-0
lines changed

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
* text=auto
2+
/bin/credentials-helper eol=lf
3+
/bin/ungit eol=lf

.gitignore

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
lib-cov
2+
*.seed
3+
*.log
4+
*.csv
5+
*.dat
6+
*.out
7+
*.pid
8+
*.gz
9+
10+
pids
11+
logs
12+
results
13+
14+
npm-debug.log
15+
16+
public/css/
17+
public/js/ungit.js
18+
public/js/ungit.js.map
19+
public/js/devStyling.js
20+
public/images/
21+
22+
.ungitrc
23+
24+
report/
25+
.bin/
26+
27+
/node_modules/
28+
29+
/clicktests/screenshots/
30+
/build
31+
/*.dll
32+
/nw.exe
33+
/nw.pak
34+
35+
/components/**/*.css
36+
/components/**/*.bundle.js
37+
38+
coverage
39+
40+
/src

.nodemonignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
/public/*
2+
.git/*
3+
.git

.npmignore

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
lib-cov
2+
*.seed
3+
*.log
4+
*.csv
5+
*.dat
6+
*.out
7+
*.pid
8+
*.gz
9+
10+
pids
11+
logs
12+
results
13+
14+
npm-debug.log
15+
16+
node_modules/
17+
18+
.ungitrc
19+
.travis.yml
20+
Gruntfile.js
21+
22+
assets/
23+
test/
24+
report/
25+
public/source/
26+
public/vendor/css/
27+
public/vendor/js/
28+
public/templates/
29+
public/devStyling.html
30+
public/js/devStyling.js
31+
32+
clicktests/
33+
clicktestout/
34+
35+
teststabilitytester.js
36+
37+
build/
38+
*.dll
39+
nw.exe
40+
nw.pak
41+
42+
.npmrc

.travis.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
sudo: required
2+
language: node_js
3+
node_js:
4+
- "4.1"
5+
- "5.3"
6+
- "6.0"
7+
branches:
8+
only:
9+
- master
10+
env:
11+
global:
12+
- CXX=g++-4.8
13+
matrix:
14+
- GIT_VERSION=default
15+
- GIT_VERSION=edge
16+
addons:
17+
apt:
18+
sources:
19+
- ubuntu-toolchain-r-test
20+
packages:
21+
- g++-4.8
22+
before_script:
23+
- npm cache clean
24+
- npm install -g grunt-cli
25+
- if [ "$GIT_VERSION" = "edge" ]; then sudo add-apt-repository ppa:git-core/ppa -y && sudo apt-get update -q && sudo apt-get install -y git; fi
26+
- git config --global user.email "test@testy.com"
27+
- git config --global user.name "Test testy"
28+
- git version
29+
- grunt -d
30+
after_script:
31+
- grunt travisnpmpublish

CHANGELOG.md

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# Change Log
2+
All notable changes to this project will be documented in this file.
3+
This project adheres to [Semantic Versioning](http://semver.org/).
4+
Use the following format for additions: ` - VERSION: [feature/patch (if applicable)] Short description of change. Links to relevant issues/PRs.`
5+
6+
- 1.1.16:
7+
- clicktests logging correction and using wait for within tests.
8+
- Refactor filewatch and using normalized test path
9+
- throttle parallel test's parellelization limit
10+
- dependency bump
11+
- Fix context issue for `gitSetUserConfig` [#912](https://github.com/FredrikNoren/ungit/issues/912)
12+
- 1.1.15: Updating crash page with instructions and adblock detection
13+
- 1.1.14: Disable strict mode for startup params and config [#890](https://github.com/FredrikNoren/ungit/issues/890)
14+
- 1.1.13: Fix startup args bug: [#896](https://github.com/FredrikNoren/ungit/issues/896)
15+
- 1.1.12:
16+
- Retain commit messages when commit fails [#882](https://github.com/FredrikNoren/ungit/pull/882)
17+
- Fix rare edge case where remote node is gone during reset op.
18+
- rescursively resolve all promises before caching them. [#878](https://github.com/FredrikNoren/ungit/pull/878)
19+
- 1.1.11:
20+
- Fix cli arguments [#871](https://github.com/FredrikNoren/ungit/pull/871)
21+
- Stop if ~/.ungitrc contains syntax error
22+
- Removed official support ini format of ~/.ungitrc, because internal API supports only JSON
23+
- 1.1.10: Fix broken diff out in some cases when diff contains table. [#881](https://github.com/FredrikNoren/ungit/pull/881)
24+
- 1.1.9: Fix around ubuntu's inability to cache promises. [#877](https://github.com/FredrikNoren/ungit/pull/878)
25+
- 1.1.8:
26+
- Realtime text diff via invalidate diff on directory change [#867](https://github.com/FredrikNoren/ungit/pull/867)
27+
- Promisify `./source/utils/cache.js` [#870](https://github.com/FredrikNoren/ungit/pull/870)
28+
- Fix load more text diff button. [#876](https://github.com/FredrikNoren/ungit/pull/876)
29+
- 1.1.7:
30+
- Fix diff flickering issue and optimization [#865](https://github.com/FredrikNoren/ungit/pull/865)
31+
- Fix credential dialog issue [#864](https://github.com/FredrikNoren/ungit/pull/864)
32+
- Fix HEAD branch order when redraw [#858](https://github.com/FredrikNoren/ungit/issues/858)
33+
- 1.1.6: Fix path auto complete [#861](https://github.com/FredrikNoren/ungit/issues/861)
34+
- 1.1.5: Update "Toggle all" button after commit or changing selected files [#859](https://github.com/FredrikNoren/ungit/issues/859)
35+
- 1.1.4: [patch] Promise refactoring
36+
- 1.1.3: [patch] Fix submodule navigation on windows [#577](https://github.com/FredrikNoren/ungit/issues/577)
37+
- 1.1.2: Fix a bug that prevented the new version dialog from being dismissed
38+
- 1.1.1: [patch] Fixed small spelling error for ignore whitespace feature [#853](https://github.com/FredrikNoren/ungit/pull/853)
39+
- 1.1.0: Added option to ignore ungit version checks [#851](https://github.com/FredrikNoren/ungit/issues/851)
40+
- 1.0.1: [patch] Fixed gravatar avatar fetch if email have different cases applied. [#847](https://github.com/FredrikNoren/ungit/issues/847)
41+
- 1.0.0: Introduced Continuous delivery. [#823](https://github.com/FredrikNoren/ungit/issues/823)
42+
43+
## [1.0.0](https://github.com/FredrikNoren/ungit/compare/v0.10.3...v1.0.0)
44+
45+
### Added
46+
- Added search by git folder name in the search bar. [#793](https://github.com/FredrikNoren/ungit/issues/793)
47+
- New configuration option `logLevel` allows you to assign the level of logging you want to see in the servers output console.
48+
- New configuration option `mergeTool` allows you to assign a custom external merge tool for conflict resolution [#783](https://github.com/FredrikNoren/ungit/issues/783) [Doc](https://github.com/FredrikNoren/ungit/blob/master/MERGETOOL.md)
49+
- Whitespace ignore option for text diffs [#777](https://github.com/FredrikNoren/ungit/issues/777)
50+
- Fix for favorites linking in case rootPath is used @sebastianmay [#609](https://github.com/FredrikNoren/ungit/issues/609) and image diffing
51+
- Limit commit title to 72 characters, the rest is truncated and shown when inspecting the commit
52+
- Updated file watch logic to closely follow git commands in another process [#283](https://github.com/FredrikNoren/ungit/issues/283)
53+
54+
### Fixed
55+
- File diff firing increasing number of events longer it survives.
56+
- Fix missing ungit logo. [#812](https://github.com/FredrikNoren/ungit/issues/812)
57+
- Fix when stash output is empty [#818](https://github.com/FredrikNoren/ungit/issues/818)
58+
- Fix minor display error for wide git repo [#830](https://github.com/FredrikNoren/ungit/pull/830)
59+
- Persist commit messages during merge operation [#779](https://github.com/FredrikNoren/ungit/issues/779)
60+
- Refresh `staging.files` object for cleaner refresh such as refresh pached line list, diff and etc.
61+
- Fixed an issue where patching on some key word file names such as "test".
62+
- Fix missing commit message body if commit was committed with Visual Studio or Visual Studio Code [#826](https://github.com/FredrikNoren/ungit/pull/826)
63+
- Fix initial page load when loaded node does not fits in screen. [#832](https://github.com/FredrikNoren/ungit/issues/832)
64+
65+
## [0.10.3](https://github.com/FredrikNoren/ungit/compare/v0.10.2...v0.10.3)
66+
67+
### Added
68+
- Show diffs for stashed changes [#444](https://github.com/FredrikNoren/ungit/issues/444)
69+
- Active node focused git log result [#420](https://github.com/FredrikNoren/ungit/issues/420)
70+
71+
### Fixed
72+
- Missing npm as a normal dependency [#766](https://github.com/FredrikNoren/ungit/issues/766)
73+
74+
## [0.10.2](https://github.com/FredrikNoren/ungit/compare/v0.10.1...v0.10.2)
75+
76+
# Fixed
77+
- Handle SIGTERM and SIGINT [#763](https://github.com/FredrikNoren/ungit/issues/763)
78+
79+
### Added
80+
- Added bare repo support [#177](https://github.com/FredrikNoren/ungit/issues/177) [#728](https://github.com/FredrikNoren/ungit/issues/728)
81+
- Added support for cherry-pick conflict[#701](https://github.com/FredrikNoren/ungit/issues/701)
82+
- Added wordwrap support for diffs [#721](https://github.com/FredrikNoren/ungit/issues/721)
83+
- Support for Node6 [#745](https://github.com/FredrikNoren/ungit/pull/745/files)
84+
- Added "autoCheckoutOnBranchCreate" option [#752](https://github.com/FredrikNoren/ungit/pull/752/files)
85+
86+
### Fixed
87+
- Fix maxConcurrentGitOperations not limiting git processes [#707](https://github.com/FredrikNoren/ungit/issues/707)
88+
- Fix ".lock" file conflicts in parallelized git operations [#515](https://github.com/FredrikNoren/ungit/issues/515)
89+
- Allow Ungit to function under sub dir of a git dir [#734](https://github.com/FredrikNoren/ungit/issues/734)
90+
- Removed deprecated npmconf package [#746](https://github.com/FredrikNoren/ungit/issues/746)
91+
- More helpful warning messages [#749](https://github.com/FredrikNoren/ungit/pull/749/files)
92+
- Deleting already deleted remote tag [#748](https://github.com/FredrikNoren/ungit/pull/748)
93+
- Fix to handle revert merge commit [#757](https://github.com/FredrikNoren/ungit/pull/757)
94+
95+
### Changed
96+
- Cleaner rebase conflict message display [#708](https://github.com/FredrikNoren/ungit/pull/708)
97+
- ES6 [#672](https://github.com/FredrikNoren/ungit/pull/672)
98+
- Dropped support for Node 0.10 and 0.12 [#745](https://github.com/FredrikNoren/ungit/pull/745/files)
99+
100+
## [0.10.1](https://github.com/FredrikNoren/ungit/compare/v0.10.0...v0.10.1)
101+
102+
### Added
103+
- Introduced change log! [#687](https://github.com/FredrikNoren/ungit/issues/687)
104+
- Improved server and client error logging [#695](https://github.com/FredrikNoren/ungit/pull/695)
105+
106+
### Fixed
107+
- Fix crashes due to submodule parsing [#690](https://github.com/FredrikNoren/ungit/issues/690) [#689](https://github.com/FredrikNoren/ungit/issues/689)
108+
- Fix duplicate remote tag issues [#685](https://github.com/FredrikNoren/ungit/issues/685)
109+
- Fix scrolling issue in safari [#686](https://github.com/FredrikNoren/ungit/issues/686)
110+
- Fix git hooks failing on non-ascii files [#676](https://github.com/FredrikNoren/ungit/issues/676)
111+
112+
### Removed
113+
- Reverted on hover button effects [#688](https://github.com/FredrikNoren/ungit/issues/688)
114+
115+
### Changed
116+
- Upgrade keen.io client code [#679](https://github.com/FredrikNoren/ungit/issues/679)

CONTRIBUTING.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
These are the contributing guidelines as well as some documentation on how the code is structured. Read up before contributing to make everything as smooth as possible.
2+
3+
Posting issues
4+
==============
5+
6+
Just common sense; do a quick search before posting, someone might already have created an issue (or resolved the problem!). If you're posting a bug; try to include as much relevant information as possible (ungit version, node and npm version, os, any git errors displayed, output from cli console and output from the browser console).
7+
8+
Pull requests
9+
=============
10+
All PRs are automatically published to NPM once merged (see [#823](https://github.com/FredrikNoren/ungit/issues/823)).
11+
There are two things you have to do for all PRs:
12+
- Make sure to include a note in CHANGELOG.md about the change as part of the PR.
13+
- If it's a code change: Bump the version in `package.json`.
14+
- Does the change fundamentally change how people use Ungit: Bump the major version.
15+
- Does the change introduce new features: Bump the minor version.
16+
- Otherwise (bug fixes, tweaks and refactoring): Bump patch version.
17+
- If the change doesn't affect the product (e.g. you change the README): No need to bump the version.
18+
19+
Writing plugins
20+
===============
21+
See [PLUGINS.md](PLUGINS.md)
22+
23+
Developing for Ungit proper
24+
===========================
25+
26+
I do accept pull requests, but I also reserve the right to not do so for things I don't think fit with Ungit. If you are developing anything new you should almost always also provide tests for it, preferably clicktests but it doesn't hurt to write REST-interface tests as well if applicable. Try to post pull requests early, even at a concept stage, to get feedback and increase chances it's merged.
27+
28+
What you need to get started
29+
----------------------------
30+
31+
You'll need the same as for Ungit; node, npm and git. You will also need grunt (`npm install -g grunt-cli`).
32+
33+
Getting started
34+
---------------
35+
36+
To get started developing on Ungit:
37+
38+
1. Make sure you have [node.js](http://nodejs.org), [npm](https://npmjs.org/), [git](http://git-scm.com/) and [grunt](http://gruntjs.com/) installed.
39+
2. Clone the repository to a local directory.
40+
3. Run `npm install` to install dependencies.
41+
4. Run `grunt` to build (compile templates, css and js).
42+
5. Type `npm start` to start ungit, or `npm test` to run tests.
43+
6. (Optional). Run `grunt watch` to automatically rebuild stuff when you change files.
44+
45+
Run ungit as standalone application
46+
-----------------------------------
47+
48+
To provide easier access to launch ungit, very early stage of standalone application container using [electron](http://electron.atom.io/) is available.
49+
Please note this is not yet ready for public release and being developed having several known & unknown limitations.
50+
51+
To get started:
52+
1. Follow steps in 'Getting started' to get a development environment ready.
53+
2. Run `grunt default && grunt package`. This will compile latest ungit and will create a standalone application package under `build/`
54+
55+
Known limitation:
56+
1. Current standalone application does not allow to execute more than one instance.
57+
2. There is no installer package neither automatic update mechanism for standalone application in place yet.
58+
59+
Additional notes:
60+
1. To create windows package with proper application description on non-windows platform, [wine](https://www.winehq.org/) is required to be installed. If not, windows package will be created with default resources.
61+
62+
Architecture overview
63+
---------------------
64+
65+
Ungit has two major parts; the server and the ui. The server exposes a REST interfaces, which enables it to be run on a remote server. The UI is a single-page web-app, built using Knockout.js.
66+
67+
Folders
68+
-------
69+
70+
* `assets/` Raw assets used for development.
71+
* `bin/` "Binary" files, the ungit launcher script and the credentials-helper, which is invoked by git to acquire credentials when using http authentication.
72+
* `clicktests/` Phantom.js clicktest; basically tests that run on the rendered DOM. Since these run all the way, from the DOM down to the server, they're also the most powerful of the tests.
73+
* `components/` This directory contains all view components for Ungit, each of them exposed as an Ungit plugin.
74+
* `public/` The UI web-app.
75+
* `public/css/` CSS generated by the grunt script.
76+
* `public/fonts/` & `public/images` Assets, some of which are compiled into the CSS by the grunt script, others (for instance those that are too large to compile into the CSS efficiently) are served directly.
77+
* `public/js/` An ungit.js file generated by the grunt script, as well as raven files which handle exception logging.
78+
* `public/less/` Less files, which are the "source" used to generate the CSS.
79+
* `public/source/` Javascript source code, which is turned into the public/js/ungit.js file by the grunt script.
80+
* `public/vendor/` Various 3rd-party libs.
81+
* `source/` Server and shared (i.e. used by both server and UI) source code.
82+
* `test/` Unit tests and REST interface tests.
83+
84+
Running tests
85+
-------------
86+
87+
`grunt test` will run both unit tests, REST-interface tests, and clicktests. `grunt unittest` only runs the tests in the test/ folder, `grunt clicktest` runs only the tests in the clicktests/ folder. Install mocha (`npm install -g mocha`) to run specific tests in the test folder and get better stack traces: `mocha test/spec.git-api.js`.
88+
89+
Things to consider when developing
90+
----------------------------------
91+
92+
* Try to make everything as touch friendly as possible, for instance no mouse over tooltips (try to make it clear without that). Everything doesn't adhere 100% to that right now but I'm trying to move it more in that direction.
93+
* Write tests. The most important tests to write are usually the clicktests since they will cover the most code (both ui and backend).

0 commit comments

Comments
 (0)