Windows support 2
techtonik opened this issue ยท 20 comments
There are issues with Windows. tox
tests fail.
py27 runtests: commands[0] | nosetests
.................FFF................................EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE.EEEEEE
- setup AppVeyor @spderosso?
- fix Windows tests - https://ci.appveyor.com/project/spderosso/gitless-11bfm
Why libgit2 should be built from source? gitless
just needs a wheel binary.
The script follows the installation instructions for pygit2. Pygit2 requires libgit2 to be installed and it seems like the preferred approach for installing libgit2 is to build it from source.
@spderosso it is pygit2 bug then.
Perhaps, but the build log says:
Installed c:\projects\gitless\.eggs\pygit2-0.25.1-py2.7-win32.egg
which suggests that pygit2 was correctly installed. Yet the file that is causing the error is the cffi backend, which is related to pygit2.
I am going to try to see if I can reproduce it locally.
@spderosso what is the pip
version? I'd expect it to build and install wheel and not egg.
I filled libgit2/pygit2#714 to update Windows installation instructions. I see no need to rebuild pygit2
from source.
Now tests on Python 3 fail because of pbs
https://ci.appveyor.com/project/spderosso/gitless/build/1.0.12/job/0osex6dyvhxk9xx3#L71 with:
pbs.CommandNotFound: __path__
Either fork and patch https://github.com/techtonik/pbs or switch to tomerfiliba/plumbum#332
I abandoned bad habit of using Windows, so feel free to pick up this issue.
GL works with Cygwin on Windows, but native support via binary wheels is the way to go.
Are there any plans to get a running windows version? Iโd like to use it, but I need to use Windows 7 at my work.
Thank you!
I feel that I should note it here, but gitless seems to work fine on Windows after you install Python 2.7 (tested with the 32-bit version). Afterwards, just do: python -m ensurepip
and python -m pip install gitless
Any word on this? Python 2 has been obsolete for years, and is officially deprecated. Windows is a very popular OS. What's the limfac on releasing a Windows binary or something that runs on top of Py 3?
- Fix link to AppVeyor automatic tests after repo renaming - see README
- Fix AppVeyor
- Fix tests
- Run tests on Python 3 to see what is broken
If you running Windows, you can run the tests and report results here.
I'd like to help running tests on Windows (I'm developing in Delphi & CMD on Windows and the white papers on Gitless read like that's finally the solution to Git screwing with my source because I got some arcane detail wrong), but I have trouble getting started.
If someone would find the motivation to get a newbie willing to learn started, I'd be rather grateful.
@neoboot With the new changes I just pushed, Gitless should now work on Windows if you have Python 3.8. See: https://ci.appveyor.com/project/spderosso/gitless-11bfm
Can you or anyone else using Windows check that it works? You can follow the instructions on the README file to install from source and run the tests. There appears to be a problem with Windows+Python 3.7, which I might be able to take a look at later this week.
Using a Python 3.8 conda environment, I was able to install gitless, with a twist:
conda install "pygit2==0.28.2"
pip install gitless
Note that conda install pygit2
will install version 1.2.1 which collides with the pip package dependencies.
Running Gitless:
(py38) C:\Users\xyz>gl --help
Traceback (most recent call last):
File "c:\programdata\miniconda3\envs\py38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\programdata\miniconda3\envs\py38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\ProgramData\Miniconda3\envs\py38\Scripts\gl.exe\__main__.py", line 4, in <module>
File "c:\programdata\miniconda3\envs\py38\lib\site-packages\gitless\cli\gl.py", line 18, in <module>
from pbs import ErrorReturnCode
File "c:\programdata\miniconda3\envs\py38\lib\site-packages\pbs.py", line 575, in __getattr__
return self.env[name]
File "c:\programdata\miniconda3\envs\py38\lib\site-packages\pbs.py", line 527, in __missing__
return Command._create(k)
File "c:\programdata\miniconda3\envs\py38\lib\site-packages\pbs.py", line 265, in _create
if not path: raise CommandNotFound(program)
pbs.CommandNotFound: __path__
Yeah that seems to work :-)
C:\Users\Arne\Desktop\forks>git clone https://github.com/gitless-vcs/gitless.git
Cloning into 'gitless'...
remote: Enumerating objects: 4130, done.
remote: Total 4130 (delta 0), reused 0 (delta 0), pack-reused 4130
Receiving objects: 100% (4130/4130), 22.40 MiB | 3.07 MiB/s, done.
Resolving deltas: 100% (2580/2580), done.
C:\Users\Arne\Desktop\forks\gitless>activate py38
(py38) C:\Users\Arne\Desktop\forks\gitless>python setup.py build
running build
running build_py
creating build
creating build\lib
creating build\lib\gitless
copying gitless\core.py -> build\lib\gitless
copying gitless\__init__.py -> build\lib\gitless
creating build\lib\gitless\cli
copying gitless\cli\commit_dialog.py -> build\lib\gitless\cli
copying gitless\cli\file_cmd.py -> build\lib\gitless\cli
copying gitless\cli\gl.py -> build\lib\gitless\cli
copying gitless\cli\gl_branch.py -> build\lib\gitless\cli
copying gitless\cli\gl_checkout.py -> build\lib\gitless\cli
copying gitless\cli\gl_commit.py -> build\lib\gitless\cli
copying gitless\cli\gl_diff.py -> build\lib\gitless\cli
copying gitless\cli\gl_fuse.py -> build\lib\gitless\cli
copying gitless\cli\gl_history.py -> build\lib\gitless\cli
copying gitless\cli\gl_init.py -> build\lib\gitless\cli
copying gitless\cli\gl_merge.py -> build\lib\gitless\cli
copying gitless\cli\gl_publish.py -> build\lib\gitless\cli
copying gitless\cli\gl_remote.py -> build\lib\gitless\cli
copying gitless\cli\gl_resolve.py -> build\lib\gitless\cli
copying gitless\cli\gl_status.py -> build\lib\gitless\cli
copying gitless\cli\gl_switch.py -> build\lib\gitless\cli
copying gitless\cli\gl_tag.py -> build\lib\gitless\cli
copying gitless\cli\gl_track.py -> build\lib\gitless\cli
copying gitless\cli\gl_untrack.py -> build\lib\gitless\cli
copying gitless\cli\helpers.py -> build\lib\gitless\cli
copying gitless\cli\pprint.py -> build\lib\gitless\cli
copying gitless\cli\__init__.py -> build\lib\gitless\cli
(py38) C:\Users\Arne\Desktop\forks\gitless>pip install -e .
Obtaining file:///C:/Users/Arne/Desktop/forks/gitless
Collecting pygit2==1.2.0
Downloading pygit2-1.2.0-cp38-cp38-win_amd64.whl (1.1 MB)
|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 1.1 MB 1.7 MB/s
Collecting argcomplete>=1.11.1
Downloading argcomplete-1.12.1-py2.py3-none-any.whl (38 kB)
Collecting cffi
Downloading cffi-1.14.3-cp38-cp38-win_amd64.whl (179 kB)
|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 179 kB 2.2 MB/s
Collecting cached-property
Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting pycparser
Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
|โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ| 112 kB 3.3 MB/s
Installing collected packages: pycparser, cffi, cached-property, pygit2, argcomplete, gitless
Running setup.py develop for gitless
Successfully installed argcomplete-1.12.1 cached-property-1.5.2 cffi-1.14.3 gitless pycparser-2.20 pygit2-1.2.0
(py38) C:\Users\Arne\Desktop\forks\gitless>gl
Gitless: a version control system built on top of Git.
More info, downloads and documentation at http://gitless.com
commands:
track start tracking changes to files
untrack stop tracking changes to files
status show status of the repo
diff show changes to files
commit save changes to the local repository
branch list, create, delete, or edit branches
tag list, create, or delete tags
checkout checkout committed versions of files
merge merge the divergent changes of one branch onto another
resolve mark files with conflicts as resolved
fuse fuse the divergent changes of a branch onto the current branch
remote list, create, edit or delete remotes
publish publish commits upstream
switch switch branches
init create an empty git repository or clone remote
history show commit history
(py38) C:\Users\Arne\Desktop\forks\gitless>gl status
On branch master, repo-directory //
Tracked files with modifications:
โ these will be automatically considered for commit
โ use gl untrack f if you don't want to track changes to file f
โ if file f was committed before, use gl checkout f to discard local changes
There are no tracked files with modifications to list
Untracked files:
โ these won't be considered for commit
โ use gl track f if you want to track changes to file f
There are no untracked files to list