GithubHelp home page GithubHelp logo

git-cola / git-cola Goto Github PK

View Code? Open in Web Editor NEW
2.2K 81.0 452.0 21.59 MB

git-cola: The highly caffeinated Git GUI

Home Page: https://git-cola.github.io/

License: GNU General Public License v2.0

Makefile 0.29% Python 99.10% Shell 0.50% Tcl 0.11%
git-cola python git gui pyqt4 pyqt5 vcs git-addons visualization osx

git-cola's Introduction

git-cola: The highly caffeinated Git GUI

Git Cola is a powerful Git GUI with a slick and intuitive user interface.

git clone https://github.com/git-cola/git-cola.git

License Build status OpenSSF Best Practices pre-commit.ci

Documentation

Requirements

Build

  • Sphinx is used to generate the documentation.

Runtime

Git Cola uses QtPy, so you can choose between PyQt6, PyQt5 and PySide2 by setting the QT_API environment variable to pyqt6, pyqt5 or pyside2 as desired. qtpy defaults to pyqt5 and falls back to pyqt6 and pyside2 if pyqt5 is not installed.

Any of the following Python Qt libraries must be installed:

  • PyQt5 / PyQt6 5.9 or newer is required. Qt 6.2 or newer is also supported via QtPy.

  • PySide2 5.12.0 or newer.

Optional Features

Git Cola enables additional features when the following Python modules are installed.

Send2Trash enables cross-platform "Send to Trash" functionality. (source)

pyobjc enables macOS-specific application themes on macOS. (source)

Installation

There are several ways to install Git Cola but you do not need to "install" Git Cola in order to run it.

Git Cola is designed to run directly from its source tree. Installation is optional.

From Source

The recommended approach for running the latest Git Cola version is to install its PyQt dependencies using your distribution's package manager and then run ./bin/git-cola directly from source.

Installing PyQt dependencies on Debian / Ubuntu systems

Git Cola works with either PyQt5 or PyQt6 because it uses the qtpy library for PyQt compatibility.

PyQt5

Users on newer Debian/Ubuntu version can install a single package to run from source.

sudo apt install python3-qtpy

If you are on an older version that does not have python3-qtpy available then you can install the following packages directly.

sudo apt install python3-pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qtwebengine python3-pyqt5.qtsvg

PyQt6

If you'd like to use Git Cola with the newer PyQt6 ecosystem then you can install these packages instead of PyQt5.

sudo apt install python3-pyqt6 python3-pyqt6.qtsvg python3-pyqt6.qtwebengine

At this point you should be able to launch ./bin/git-cola from the source tree and there is nothing more to do.

The further instructions below detail how to install Git Cola from PyPI or how to install it into a location separate from the source tree.

Linux

Linux is it! Your distro has probably already packaged git-cola. If not, please file a bug against your distribution ;-)

Arch

Available in the AUR.

Debian, Ubuntu

apt install git-cola

Fedora

dnf install git-cola

Gentoo

emerge git-cola

OpenSUSE, SLE

zypper install git-cola

Slackware

Available in SlackBuilds.org.

Ubuntu

See here for the versions that are available in Ubuntu's repositories.

FreeBSD

# Install from official binary packages
pkg install -r FreeBSD devel/git-cola

# Build from source
cd /usr/ports/devel/git-cola && make clean install

Install into a Python Virtualenv from PyPI using pip

IMPORTANT: never run pip install or garden install outside of a Python virtualenv or as root!

IMPORTANT: if you are on Linux distributions where PyQt6 or PyQt5 are available from your package manager then it is highly recommended to install those dependencies using your system's package manager. See the section above for details.

One way to install the latest released version is to use venv (virtualenv) and pip. This installs git-cola from pypi.org.

python3 -m venv --system-site-packages env3
./env3/bin/pip install git-cola
./env3/bin/git-cola

Add the env3/bin directory to your PATH or symlink to bin/git-cola from somewhere in your PATH such as ~/.local/bin/git-cola, and you can launch Git Cola like any other built-in git command:

git cola
git dag

Install into a Python Virtualenv from Source

If you don't have PyQt installed then the easiest way to get it is to use a Python virtualenv and install Git Cola into it in "editable" mode.

This install method lets you upgrade Git Cola by running git pull.

# Create a virtualenv called "env3" and activate it.
python3 -m venv --system-site-packages env3

# Install PyQt and (optional) extra packages to enable all features.
./env3/bin/pip install --editable '.[extras,pyqt6]'

# Run Git Cola via the "git-cola" Git subcommand.
source env3/bin/activate
git cola

If you add env3/bin (or symlink to env3/bin/git-cola ) somewhere in your $PATH then you can run git cola as if it were a builtin git command from outside of the virtualenv (e.g. after running "deactivate" or when opening a new shell).

Standalone Installation from Source

Running garden -D prefix=$HOME/.local install will install Git Cola in your $HOME/.local directory ($HOME/.local/bin/git-cola, $HOME/.local/lib, etc).

This installation method assumes that the qtpy and PyQt* dependencies have been pre-installed.

The Garden recipe also supports DESTDIR to support creating packages for Linux package managers:

garden -D DESTDIR=/tmp/stage -D prefix=/usr/local install

If you do not have garden available then make can be used instead. The Makefile supports staged installs using the conventional DESTDIR and prefix variables.

make DESTDIR=/tmp/stage prefix=/usr/local install

macOS

For most end-users we recommend using either Homebrew or installing into a Python virtualenv as described above.

You can install Git Cola from source using the same steps as above.

Homebrew

An easy way to install Git Cola is to use Homebrew . Use Homebrew to install the git-cola recipe:

brew install git-cola

If you install using Homebrew you can stop at this step. You don't need to clone the repo or anything.

git-cola.app

If you have all of the dependencies installed, either via pip or brew then you can build a shell git-cola.app app bundle wrapper for use in /Applications.

If you'd like to build a git-cola.app bundle for /Applications run this command:

garden macos/app

You will need to periodically rebuild the app wrapper whenever Python is upgraded.

Updating macOS and Homebrew

Updating macOS can often break Homebrew-managed software.

If you update macOS and Git Cola stops working then then you probably need to re-install Git Cola's dependencies.

Re-installing from scratch using the instructions below can get things back in shape.

brew update

brew uninstall git-cola
brew uninstall pyqt
brew uninstall pyqt@5
brew autoremove

brew install git-cola

Windows

IMPORTANT If you have a 64-bit machine, install the 64-bit versions only. Do not mix 32-bit and 64-bit versions.

Download and install the following:

Once these are installed you can run Git Cola from the Start menu.

See "Windows (Continued)" below for more details.

If you'd like to install Git Cola with winget run the following command:

winget install git-cola.git-cola

As there is no dependency resolution yet you have to install Git as well with:

winget install Git.Git

Goodies

Git Cola ships with an interactive rebase editor called git-cola-sequence-editor. git-cola-sequence-editor is used to reorder and choose commits when rebasing. Start an interactive rebase through the "Rebase" menu, or through the git cola rebase sub-command to use the git-cola-sequence-editor:

git cola rebase @{upstream}

git-cola-sequence-editor can be launched independently of git cola by telling git rebase to use it as its editor through the GIT_SEQUENCE_EDITOR environment variable:

export GIT_SEQUENCE_EDITOR="$HOME/git-cola/bin/git-cola-sequence-editor"
git rebase -i @{upstream}

Shell Completions

Shell completion scripts are available for bash and zsh. Each script contains instructions on how to install and activate the completions.

Git Cola Sub-commands

The git-cola command exposes various sub-commands that allow you to quickly launch tools that are available from within the git-cola interface. For example, git cola find launches the file finder, and git cola grep launches the grep tool.

See git cola --help-commands for the full list of commands.

$ git cola --help-commands
usage: git-cola [-h]

                {cola,am,archive,branch,browse,config,
                 dag,diff,fetch,find,grep,merge,pull,push,
                 rebase,remote,search,stash,tag,version}
                ...

valid commands:
  {cola,am,archive,branch,browse,config,
   dag,diff,fetch,find,grep,merge,pull,push,
   rebase,remote,search,stash,tag,version}

    cola                start git-cola
    am                  apply patches using "git am"
    archive             save an archive
    branch              create a branch
    browse              browse repository
    config              edit configuration
    dag                 start git-dag
    diff                view diffs
    fetch               fetch remotes
    find                find files
    grep                grep source
    merge               merge branches
    pull                pull remote branches
    push                push remote branches
    rebase              interactive rebase
    remote              edit remotes
    search              search commits
    stash               stash and unstash changes
    tag                 create tags
    version             print the version

Development

If you already have Git Cola's dependencies installed then you can start cola as a Python module if you have the source code available.

python -m cola
python -m cola dag

The following commands should be run during development:

# Run the unit tests
$ garden test

# Run tests and doc checks
$ garden check

# Run tests against multiple python interpreters using tox
$ garden tox

The test suite can be found in the test directory.

Commits and pull requests are automatically tested for code quality using GitHub Actions.

Auto-format cola/i18n/*.po files before committing when updating translations:

$ garden po

When submitting patches, consult the contributing guidelines.

Packaging Notes

Git Cola installs its modules into the default Python site-packages directory (e.g. lib/python3.7/site-packages) using setuptools.

While end-users can use pip install git-cola to install Git Cola, distribution packagers should use the garden -D prefix=/usr install process. Git Cola's Garden recipe wraps pip install --prefix=<prefix> to provide a packaging-friendly garden install target.

Windows (Continued)

Microsoft Visual C++ 2015 Redistributable

Earlier versions of Git Cola may have shipped without vcruntime140.dll and may not run on machines that are missing this DLL.

To fix this, download the Microsoft Visual C++ 2015 Redistributable and install it

Git Cola v4.0.0 and newer include this DLL and do not require this to be installed separately.

Development

In order to develop Git Cola on Windows you will need to install Python3 and pip. Install PyQt5 using pip install PyQt5 to make the PyQt5 bindings available to Python.

Once these are installed you can use python.exe to run directly from the source tree. For example, from a Git Bash terminal:

/c/Python39/python.exe ./bin/git-cola

Multiple Python versions

If you have multiple versions of Python installed, the contrib/win32/cola launcher script might choose the newer version instead of the python that has PyQt installed. In order to resolve this, you can set the cola.pythonlocation git configuration variable to tell cola where to find python. For example:

git config --global cola.pythonlocation /c/Python39

Building Windows Installers

Windows installers are built using

To build the installer using Pynsist run:

./contrib/win32/run-pynsist.sh

This will generate an installer in build/nsis/.

Windows "History Browser" Configuration Upgrade

You may need to configure your history browser if you are upgrading from an older version of Git Cola on Windows.

gitk was originally the default history browser, but gitk cannot be launched as-is on Windows because gitk is a shell script.

If you are configured to use gitk, then change your configuration to go through Git's sh.exe on Windows. Similarly, we must go through python.exe if we want to use git-dag.

If you want to use gitk as your history browser open the Preferences screen and change the history browser command to:

"C:/Program Files/Git/bin/sh.exe" --login -i C:/Git/bin/gitk

git-dag became the default history browser on Windows in v2.3, so new users do not need to configure anything.

git-cola's People

Contributors

achernet avatar andidog avatar astrofrog avatar bensmrs avatar brlin-tw avatar ccordoba12 avatar davvid avatar gdebure avatar goanpeca avatar guoyunhe avatar igor-galarraga avatar jm4r avatar kurtmckee avatar laerreal avatar lah7 avatar lavenderses avatar living180 avatar manithree avatar mmargoliono avatar nodd avatar pavreh avatar pre-commit-ci[bot] avatar scop avatar sthalik avatar szymon-judasz avatar takluyver avatar ugtar avatar vdragon avatar xieofxie avatar zisato 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  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  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  avatar  avatar  avatar  avatar

git-cola's Issues

Remember options for dialogs

From Ugo Riboni on the git-cola mailing list:

  • The ability to remember options for dialogs, e.g. the "pull" dialog.
    For example in my workflow i do "pull --rebase" a lot, and having to check
    the "rebase" checkbox everytime is annoying.
    Same for "push" and all those other commands with lots of options.
    (by the way David, thanks for adding that "rebase" option :))

Add a central notifier for keeping views in sync

Right now the classic and repo status views can get out of sync since they each have their own copy of the model and do not communicate with each other.

cola needs a central cola.notifier module to handle cross-object messages. Much of the tightly coupled operations (such as clicking on a file in the repo status view) could be decoupled by having the selection and other events going through the notifier.

Each view could then simply pickup messages from the notifier and react accordingly. This should allow us to, for instance, click on a filename in the classic or status views and have the diff show up in the diff view.

Full-blown updates should also go through the notifier so that refreshing one view refreshes them all.

Drag and drop patches

git-cola should allow drag+drop of patches.

Dropping a patch on cola should run 'git-am'.

Dragging a revision outside of cola should run git-format-patch.

Crash with ""Cola Classic..." menu entry

I get the following backtrace when trying to use the "Cola Classic..." menu entry.

Traceback (most recent call last):
File "/usr/share/git-cola/lib/cola/qobserver.py", line 115, in SLOT
self._callbackssender
File "/usr/share/git-cola/lib/cola/controllers/classic.py", line 23, in cola_classic
view.setModel(GitRepoModel(view, model))
File "/usr/share/git-cola/lib/cola/models/gitrepo.py", line 44, in init
self._initialize()
File "/usr/share/git-cola/lib/cola/models/gitrepo.py", line 96, in _initialize
self.add_file(parent, path)
File "/usr/share/git-cola/lib/cola/models/gitrepo.py", line 57, in add_file
row_items[0].setIcon(qtutils.file_icon())
RuntimeError: underlying C/C++ object has been deleted

When trying it again:

fatal: unable to run 'git-cola'

And it closes.

"Commit -> Browse commits" (and other features) doesn't work

Traceback (most recent call last):
  File "C:\Program Files (x86)\git-cola\share\git-cola\lib\cola\views\main.py", line 599, in browse_commits
    select_commits('Browse Commits', revs, summaries)
  File "C:\Program Files (x86)\git-cola\share\git-cola\lib\cola\controllers\selectcommits.py", line 21, in select_commits
    ctl = SelectCommitsController(model, view, revs, summaries)
  File "C:\Program Files (x86)\git-cola\share\git-cola\lib\cola\controllers\selectcommits.py", line 36, in __init__
    self.commit_sha1_selected)
TypeError: arguments did not match any overloaded call:
  QObject.connect(QObject, SIGNAL(), QObject, SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'str'
  QObject.connect(QObject, SIGNAL(), callable, Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'str'
  QObject.connect(QObject, SIGNAL(), SLOT(), Qt.ConnectionType=Qt.AutoConnection): argument 2 has unexpected type 'str'

Some other menu items spit out similar errors.

Can't run latest binary on Windows

With a fresh install of the latest Win32 binary, I can't run git-cola at all. The error is as follows:

File "C:\Program Files\git-cola\share\git-cola\lib\cola\models\main.py", line 483, in set_diff_font
self.read_font_sizes()
File "C:\Program Files\git-cola\share\git-cola\lib\cola\models\main.py", line 478, in read_font_sizes
self.global_cola_fontdiff_size = int(items[1])
ValueError: invalid literal for int() with base 10: '8.25'

Cola 1.3.8 Broken on Windows

Hi There,

This is what spits out when I try to run the latest cola release:

Traceback (most recent call last):
File "c:/Program Files/Cola/bin/git-col
cola.main.main()
File "c:\Program Files\Cola\share\git-c
n
ctl = MainController(model, view)
File "c:\Program Files\Cola\share\git-c
218, in init
lambda: self.model.git.web__browse(re
File "c:\Program Files\Cola\share\git-c
n add_callbacks
self.autoconnect(getattr(self.view, s
AttributeError: menu_diff_expression

cola-1.4.0.5 doesn't start with ubuntu hardy

I have downloaded tarball, install ACTIVE INGREDIENTS and ADDITIVES :-) run make and when i want to start cola i get this message:

Traceback (most recent call last):
File "bin/git-cola", line 54, in
cola.main.main()
File "/home/int/Plocha/gitcola/cola-1.4.0.5/cola/main.py", line 104, in main
from cola.models.gitrepo import GitRepoModel
File "/home/int/Plocha/gitcola/cola-1.4.0.5/cola/models/gitrepo.py", line 223, in
class GitRepoInfoTask(QtCore.QRunnable):
AttributeError: 'module' object has no attribute 'QRunnable'

Stage is unacceptably slow on large repositories

Staging/unstaging operations are way too slow on large repositories. This is probably especially noticeable under windows.

Clicking on a file icon to stage/un-stage it can take 4+ seconds. This is unusable, especially when you wish to click on multiple files for staging.

I believe this is because it refreshes all information after the stage.

Git Gui responds almost instantly to the same operations.

Use pygments to do syntax highlighting on top of diff view

From the mailing list:
"It would be a super hot feature to syntax highlight diffs using pygments. "
"Optionally, you could use the diff colors as background (light red, light green), and syntax higlight at the same time. "

What if we lighten the red/green background colors, and put the syntax highlighting on top of it. We should probably make the highlighting a preference so it can be turned off.

http://pygments.org/

Use a background thread to gather worktree status, etc.

Issue #48 raised concerns about always doing the "update status" stuff after staging and unstaging a file. cola is a little heavy-handed in how it handles updates; oftentimes it does an operation and then updates its state synchronously.

The synchronous aspect isn't strictly needed. It should be possible to perform the operation asynchronously. We can have a thread gather status information in the background. We can benefit from a simple+naive implementation ("just check everything") while maintaining a responsive GUI.

Build fails in Python 2.4.3; no module hashlib

During build the make stage fails
python setup.py build
Traceback (most recent call last):
File "setup.py", line 26, in ?
from cola import version
File "/home/dekimsey/projects/git-cola/cola-1.4.2/cola/init.py", line 2, in ?
from cola.models.main import model
File "/home/dekimsey/projects/git-cola/cola-1.4.2/cola/models/main.py", line 12, in ?
from cola import utils
File "/home/dekimsey/projects/git-cola/cola-1.4.2/cola/utils.py", line 10, in ?
import hashlib
ImportError: No module named hashlib
make: *** [all] Error 1

As far as I can tell, hashlib is new in as of Python 2.5
My version of Python is 2.4.3

Tags interface element

Logging as per your request.

It appears from perusing the gnupg code that gpg-agent has a built-in gui interface for X, Windows and Aqua, but I've only tested for X. You just need to run $(eval gpg-agent) in a startup file (.bashrc or .kde/env/gpg-agent.sh, for example), and password request handling for signed tagging is handled by gpg itself without a command line prompt.

Diff mode broken

Steps to repro:

  1. run Diff --> SHA-1 with HEAD~2 as argument
  2. Repository Status window displays Staged files
  3. clicking on file does not show a diff
  4. "Exit Review Mode" button does nothing

Problems with v 1.4.0, pyqt 4.6.0, and qt 4.5.3

Cola 1.4.0 will run but will periodically crash with a segmentation fault. No error messages are displayed and there does not seem to be a common action that results in the crash. Sometimes it will crash while I am not doing anything with the interface.

Additionally, the right click popup menus in the repository status window no longer work.

No "Exit diff mode" after using Diff -> Expression

Hi,

Since this is my first issue, I'll start by saying that I really like git-cola. :)

Steps to reproduce the problem:

  1. Select Diff -> Expression
  2. Type origin/master or something appropriate for the repository
  3. Look for "Exit Diff Mode" to dismiss diff mode

Expected: See "Exit Diff Mode" below "Stash" (like what happens if I use Diff -> SHA-1)

Actual: "Exit Diff Mode" is not there for some reason.

Workaround: Use Diff-SHA-1 to make it appear.

Custom actions to run in 'sh' and require an output UI

Custom actions (recently implemented, thank-you) need to be run from with 'sh' to be compatible.

They also really need the ability to run in a console of some sort (to be compatible).

I have implemented this and will endeavour to attach it or email it directly.

Add an interactive rebase GUI with drag + drop editing

A gui for 'git rebase -i' would royally rock.

We'd need to check on the status on git-sequencer. Ideally we'd just be providing an interactive front end to the 'rebase -i' text file, though integrating more tightly might mean implementing parts of rebase in python.

Show in stash window doesn't work.

When choosing to show the diff of one particular stash. It doesn't do anything. I think i should show diff or something. And the output in the terminal is this:


Traceback (most recent call last):
  File "/usr/share/git-cola/lib/cola/qobserver.py", line 112, in SLOT
    self._callbacks[param](*args)
  File "/usr/share/git-cola/lib/cola/controllers/stash.py", line 101, in stash_show
    cola.notifier().broadcast(signals.diff_text, '%s\n\n%s' % (diffstat, diff))
NameError: global name 'signals' is not defined

This is with version 1.4.0

Option to display full path to repository

Reported by Andrew Kinney: it would be nice if cola provided more hints about what repo it's showing, perhaps using the full path instead of the default basename.

Have custom guitools defined for git gui in a menu.

It would be nice to be able to see (and edit) the tools defined for git gui in menus under git-cola.
For example:
guitool.Merge/Resolve All Merges.cmd=git mergetool --no-prompt

"Actions" menu could be a good place to put it.. or possibly its own.

.gitignore file not being used

There is a .gitignore file on the git repo for my project. The files listed there are correctly ignored using on command line or git gui, but git-cola does not use the .gitignore and does not ignore the files.

git-cola 1.4.0 crash with merge conflicts

Trying to open git-cola 1.4.0 in a repository that has merge conflicts results in a crash with:

Traceback (most recent call last):
File "/usr/bin/cola", line 54, in
cola.main.main()
File "/usr/share/git-cola/lib/cola/main.py", line 176, in main
model.update_status()
File "/usr/share/git-cola/lib/cola/models/main.py", line 468, in update_status
self.notify_message_observers(self.message_updated)
File "/usr/share/git-cola/lib/cola/observable.py", line 43, in notify_message_observers
method(_args, *_opts)
File "/usr/share/git-cola/lib/cola/views/main.py", line 205, in _update_view
merge_msg_hash = utils.checksum(merge_message_path)
NameError: global name 'merge_message_path' is not defined

git-cola doesn't start

Hellow me again :)

Don't know what is wrong but I can't to run cola anymore...
It prints lots of error messages like that:
Traceback (most recent call last):
File "/usr/share/git-cola/lib/cola/models/gitrepo.py", line 215, in event
self.emit(SIGNAL(e.signal), *e.data)
AttributeError: 'QEvent' object has no attribute 'signal'

And after whole lot of those errors I get "Segmentation fault"
I have installed python 2.6.3 and qt 4.5.3. I get this error with both versions of pyqt4(4.6 and 4.5.4). I get this error with the current git version.

Provide drop-down with previous commit messages

I think it would be really useful to have a drop-down with the previous commit messages at the bottom of the commit message editor. Selecting one would cause it to be inserted as the commit message.

It would also be good to have a keyboard shortcut for cycling through them. I didn't find a way to do this with the current UI, but please let me know if I missed something.

cola doesn't work with pyqt 4.6

I updated the pyqt to version 4.6 and i got problems now with cola:

An unexpected error occurred.
Check that you are using the latest version of PyQt and send an error report to
[email protected], including the following information:

  • your version of PyQt (4.6)
  • the UI file that caused this error
  • the debug output of pyuic4 (use the -d flag when calling pyuic4)

Error when merging branches

merging two branches with changes at same file doesn't work and get this error:

Traceback (most recent call last):
File "/home/int/Plocha/davvid-git-cola-de32d16/cola/qobserver.py", line 112, in SLOT

self._callbacksparam

File "/home/int/Plocha/davvid-git-cola-de32d16/cola/controllers/merge.py", line 82, in merge_revision

msg = gitcmds.merge_message()

TypeError: merge_message() takes exactly 1 argument (0 given)

Unable to fetch/pull to default branches.

Currently, there is no way of doing the equivalent of
"git fetch origin" or "git pull origin". (which is what git gui does). Especially when there are multiple
branches to pull.

I suggest that you have an 'all' option to both these dialogs (and the push dialog).

The gotcha on fetch/pull is that there is no way of saying 'fetch remote branch to it's default location' so I also think it would be great to include the remote tracking branches in the list of branches to fetch into, preferably at the top of the list, since these are actually the sensible default destinations for a fetch.

To fetch/pull from the remote branch into the expected local remotes/{remote}/{branch} is something like:
get fetch origin MyFeature:remotes/origin/MyFeature.

It actually makes a lot of sense to use this form as the default when pulling from an origin with a defined local branch that would be fetched into by git fetch origin.

In the case of the pull dialog, I believe it would make sense to have logic that works out for a named remote (rather than an explicit remote url) whether there is a branch that is being pulled to and make THAT the default.

gitk-like history tree view

A reusable widget for grpahically displaying a project's history would be very useful.

There are a first few steps towards this issue in the 'treeview' branch.

gitk performs very well, but users are often confused by the graphical layout of the DAG. A more natural DAG can be constructed using a QGraphicsScene (that's what the 'treeview' branch uses) but it doesn't perform as well since it doesn't have the "one-commit-per-line" limitation like gitk.

Segmentation Faults on Debain Squeeze

Hi,

I'm trying to use git-cola on Debian Squeeze (let me know which packages you'd need to see versions for) - and I get segmentation faults 50% of the time I try to start git-cola. Let me know of anything I can do, or information I can add that would help, I really want to get this working on my machine.

Thanks!
-Dave

gentoo ebuild

Here's a gentoo ebuild for git-cola, I named it dev-util/git-cola/git-cola-9999.ebuild:

Copyright 2009 Alex Peyser

Distributed under the terms of the GNU General Public License v2

EAPI=2

inherit git

DESCRIPTION="git gui"
HOMEPAGE="http://git-cola.tuxfamily.org/"

EGIT_REPO_URI="git://github.com/davvid/git-cola.git"
EGIT_TREE="HEAD" # SHA1 id

LICENSE="GPL"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
IUSE="doc"

DEPEND="
${DEPEND}
doc? ( dev-python/sphinx )
"
RDEPEND="
dev-util/git

=dev-python/PyQt4-4.3
=dev-python/pyinotify-0.7.1
=dev-lang/python-2.4
"

src_compile() {
emake DESTDIR="${D}" prefix="/usr" all
}

src_install() {
emake DESTDIR="${D}" prefix="/usr" install
use doc && emake DESTDIR="${D}" prefix="/usr" install-doc
dodoc COPYRIGHT INSTALL LICENSE README
}

More font issues

I have two fonts named 'fixed' in my system, 'Fixed [Misc]' and 'Fixed [Sony]'. I'm using the former as a diff/console font, and that setting is saved correctly to .gitconfig:

[cola]
fontdiff = Fixed [Misc],8,-1,5,50,0,0,0,0,0
savewindowsettings = true
fontui = Liberation Sans,8,-1,5,50,0,0,0,0,0

but on startup, git-cola randomly picks up either one of the 'Fixed' fonts, disregarding the foundry setting.

And speaking of fonts, I know that Linux is all about choice :), but I don't really see the point of (re)defining the user interface fonts; could it be possible to add to Edit > Options > Main font a setting which allows git-cola use the system font settings (As defined by KDE or qtconfig)? Preferably that setting should be on by default.

(Optionally) display the git command that was run in the command output window

I would like the git command that was run to be displayed in the "command output" window. The rationale is that I want to be able to learn how git is used from reading the commands that are run.

Yes, I am aware of the GIT_PYTHON_TRACE environment variable, but that gives me output in the terminal, which is not what I want.

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.