From: Mark Levedahl <mlevedahl@gmail.com>
To: mdl123@verizon.net, git@vger.kernel.org
Cc: adam@dinwoodie.org, me@yadavpratyush.com,
johannes.schindelin@gmx.de, gitster@pobox.com,
sunshine@sunshineco.com, Mark Levedahl <mlevedahl@gmail.com>
Subject: [PATCH v1 0/4] Remove obsolete Cygwin support from git-gui
Date: Mon, 26 Jun 2023 12:53:01 -0400 [thread overview]
Message-ID: <20230626165305.37488-1-mlevedahl@gmail.com> (raw)
In-Reply-To: <20230624212347.179656-1-mlevedahl@gmail.com>
=== This is an update, incorporating responses to Junio's and Eric's
comments:
-- clarified what the "upstream" git-gui branch is
-- Removed some changes from patch 2 as requested by Junio, reducing
changes in patch 3 and patch 4
All code is fixed only after applying patch 4
Differences in patch 3 and 4 are minimimized
-- updated comments to clarify G4w dedicated code.
-- updated all comments to (hopefully) clarify points of confusion
===
git-gui has many snippets of code guarded by an is_Cygwin test, all of
which target a problematic hybrid Cygwin/Windows 8.4.1 Tcl/Tk removed
from the Cygwin project in March 2012. That is when Cygwin switched to a
well-supported unix/X11 Tcl/Tk package. 64-bit Cygwin was released
later so has always had the unix/X11 package. git-gui runs as-is on
more recent Cygwin, treating it as a Linux variant, though two functions
are disabled.
The old Tcl/Tk understands Windows pathnames but has incomplete support
for unix pathnames (for instance, all pathnames output by that Tcl are
Windows, not unix). The Cygwin git executables all use unix pathnames
(though like all Cygwin executables have some capability to accept
Windows pathnames). git-gui's Cygwin specific code causes git-gui to use
Windows pathnames everywhere. The unix/X11 Tcl/Tk requires use of unix
pathname, so none of the Cygwin specific code is compatible.
git-gui is maintained at https://github.com/prati0100/git-gui. The
git-gui in Junio's tree corresponds to commit c0698df057, behind the
current git-gui master which is a5005ded.
Fortunately, the git-gui/is_Cygwin function in Junio's tree relies upon
the old Tcl/Tk that outputs Windows pathnames. As this fails to detect
Cygwin, git-gui treats Cygwin as a unix variant with no platform
specific code enabled and git-gui currently runs on Cygwin.
But, commit c5766eae6f on the git-gui master branch fixes is_Cygwin to
work with the new Tcl/Tk's signature (which is not that of a Windows
Tcl/Tk). Thus, Cygwin is detected, the incompatible Cygwin code is
enabled, and git-gui no longer runs on Cygwin.
Also, there is Cygwin specific code in the Makefile, intended to allow a
completely unsupported configuration with a Windows Tcl/Tk. However,
the Makefile code mis-identifies the unix/X11 Tcl/Tk as Windows,
triggering insertion of a hardcoded Windows path to the library
directory into git-gui making it non-portable. The Cygwin git maintainer
comments this code out, but the code should be removed as it is
demonstrated to be incompatible with Cygwin and targets a configuration
Cygwin does not support.
The existing code for file browsing and creating a desktop icon is
shared with Git For Windows support, and supports only Windows
pathnames. This code does not work on Cygwin and needs replacement or
update. The menu items for these functions are enabled by is_Cygwin, so
appear only after is_Cygwin is fixed as discussed above.
patch 1 removes the obsolete Makefile code
patch 2 removes obsolete git-gui.sh code, wrapped in is_Cygwin
except for code fixed in patches 3 and 4
patch 3 implements Cygwin specific file browsing support
patch 4 implements Cygwin specific desktop icon support
The end result is that git-gui on Cygwin is restored to the full
capabilities existing prior to the Tcl/Tk switch in 2012. Also, the
remaining Cygwin specific code, updated in patches 3 and 4, no longer
overlaps with Git For Windows support.
Any argument for keeping the old Cygwin code must address who is going
to test and maintain that code, on what platform, and who the target
audience is. The old Tcl/Tk was only on 32-bit Cygwin and only supported
for the Insight debugger, 32-bit Cygwin is no longer supported, git-gui
is not supported on 8.4.1 Tcl/Tk, and the Windows versions targeted by
2012'ish 32-bit Cygwin are no longer supported.
Mark Levedahl (4):
git gui Makefile - remove Cygwin modifications
git-gui - remove obsolete Cygwin specific code
git-gui - use cygstart to browse on Cygwin
git-gui - use mkshortcut on Cygwin
Makefile | 21 +------
git-gui.sh | 118 +++-----------------------------------
lib/choose_repository.tcl | 27 +--------
lib/shortcut.tcl | 31 +++++-----
4 files changed, 27 insertions(+), 170 deletions(-)
--
2.41.0.99.19
next prev parent reply other threads:[~2023-06-26 16:53 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-24 21:23 [PATCH v0 0/4] Remove obsolete Cygwin support from git-gui Mark Levedahl
2023-06-24 21:23 ` [PATCH v0 1/4] git gui Makefile - remove Cygwin modiifications Mark Levedahl
2023-06-24 21:23 ` [PATCH v0 2/4] git-gui - remove obsolete Cygwin specific code Mark Levedahl
2023-06-25 2:56 ` Eric Sunshine
2023-06-25 11:29 ` Mark Levedahl
2023-06-24 21:23 ` [PATCH v0 3/4] git-gui - use cygstart to browse on Cygwin Mark Levedahl
2023-06-24 21:23 ` [PATCH v0 4/4] git-gui - use mkshortcut " Mark Levedahl
2023-06-24 23:30 ` [PATCH v0 0/4] Remove obsolete Cygwin support from git-gui Junio C Hamano
2023-06-24 23:35 ` Junio C Hamano
2023-06-25 11:28 ` Mark Levedahl
2023-06-25 11:26 ` Mark Levedahl
2023-06-25 12:10 ` Mark Levedahl
2023-06-25 15:46 ` Junio C Hamano
2023-06-25 17:01 ` Mark Levedahl
2023-06-26 15:52 ` Junio C Hamano
2023-06-26 16:55 ` Mark Levedahl
2023-06-26 16:53 ` Mark Levedahl [this message]
2023-06-26 16:53 ` [PATCH v1 1/4] git gui Makefile - remove Cygwin modifications Mark Levedahl
2023-06-26 16:53 ` [PATCH v1 2/4] git-gui - remove obsolete Cygwin specific code Mark Levedahl
2023-06-26 16:53 ` [PATCH v1 3/4] git-gui - use cygstart to browse on Cygwin Mark Levedahl
2023-06-26 16:53 ` [PATCH v1 4/4] git-gui - use mkshortcut " Mark Levedahl
2023-06-27 11:51 ` [PATCH v1 0/4] Remove obsolete Cygwin support from git-gui Johannes Schindelin
2023-06-27 17:52 ` Junio C Hamano
2023-08-05 14:47 ` Mark Levedahl
2023-08-24 15:54 ` Pratyush Yadav
2023-08-29 16:03 ` Mark Levedahl
2023-08-29 16:18 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230626165305.37488-1-mlevedahl@gmail.com \
--to=mlevedahl@gmail.com \
--cc=adam@dinwoodie.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
--cc=mdl123@verizon.net \
--cc=me@yadavpratyush.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).