Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Git #77

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Add Git #77

wants to merge 1 commit into from

Conversation

Semphriss
Copy link
Contributor

@Semphriss Semphriss commented Jul 11, 2023

I hope my opening of many PRs lately don't come off as burdensome, please do tell me if my contributions are excessive. I'm opening this one because I noticed the second paragraph in Notes mentioning an interest in Git, and I've succeeded in coming up with a somewhat simple solution (Git only depends on zlib and curl).


This adds a relatively fully functional Git to w64devkit. I've taken quite a few decisions during the production of this patch, and I'm willing to update any of them as preferred.

Decisions
  • The curl dependency is technically optional, but without it, Git doesn't support http[s]:// origins, which I assumed was an important feature.
  • curl is dynamically linked; I'm not sure why Git doesn't want to pick up the static builds.
  • No SSH client is built, because Windows comes with one already. Wine does not, so ssh origins do not work under Wine.
  • curl supports a variety of SSL libraries; I compiled it with the one that said "Windows native SSL/TLS", which I figured would be the most lightweight and the simplest option on Windows. I did not test Git with Windows XP.
  • No localization, no GUI and no documentation, to keep the build as simple and small as possible.
  • Git is configured to look for less.exe as the pager and vi.bat as the editor. If none are specified at build time, Git would look for "less", find no match (less is "less.exe"), and fallback on simply printing everything, and for the editor, look for "vi", find no match for similar reasons and fail.
  • Git's make and make install are done in one command, because both require having the same arguments, so doing both separately would duplicate all the arguments.
  • Git generate one executable for each command, but the commands are 3 megabytes each, and zip doesn't seem to support symlinks very well, even with --symlinks, so I used the alias.c program to emulate those symlinks.

@Kreijstal
Copy link

why 32bit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants