Hi Shourya, My $0.02: On 03/02/20 12:17PM, Shourya Shukla wrote: > Hello everyone, > > I was doing some tests on 'git send-email'[1] and noticed a couple of things: > > 1. We are not able to send attachments via 'git send-email' unlike > various other mail clients such as GMail, Yahoo, etc. Is there > any particular reason for this (maybe performance issues or code > compatibility issues etc.)? IMO git-send-email shouldn't really be used for sending attachments. That is the job of other mail clients that you mention. git-send-email's purpose is to make it easier to send commits/patches via mail in plain text form. Its purpose is not to be a general mail client. > 2. Even so, I tried sending an image to myself and noticed that the > command basically does not check if we are sending a text file or > not(though I think it should unless there is any key reason behind it). > On executing the command(when trying to send an image), it asks for the > encoding (that was odd as it did not ask for any of emails I have sent > using the command). I entered the command: > 'git send-email --to=shouryashukla.oo@xxxxxxxxx --subject=test_mail me.JPG' > which prompts: > 'The following files are 8bit, but do not declare a Content-Transfer-Encoding.' > 'me.JPG' > 'Which 8bit encoding should I declare [UTF-8]?' > So i enter the encoding as '8BIT', which at the end prompts: > 'No subject line in me.JPG? at /usr/lib/git-core/git-send-email line 687.' > > Why is this happening even though I entered the subject in the command itself? I don't know much about the internals of git-send-email (or the JPEG image format), but my guess is git-send-email tries to decode the JPEG file as a text file and then fails to detect encoding, and so asks the user explicitly what the encoding is. I don't necessarily think that is a bad thing. You shouldn't be sending images via git-send-email. That said, maybe it would be a good idea to check the mime type of the file and warn the user. > 3. I looked up at the script of the command and noticed that there are two files, > namely: 'git-send-email.perl' and 'git-send-email', both are identical except for > an extra 'use lib (split(/:/, $ENV{GITPERLLIB} || '/home/<<username>>/share/perl5'));' > on line 3 of 'git-send-email'(my inference is that we are trying to import the perl > library by splitting the addresses at '/' or something similar). What is the purpose > of the latter file?(I am new to Perl, if I am missing out on anything please forgive > my ignorance). Running 'git ls-files | grep git-send-email' gives me: Documentation/git-send-email.txt git-send-email.perl So it means the file 'git-send-email' is not tracked and is an output from the build system. My guess is that the build system inserts this line when you run 'make'. Check the file 'perl/header_templates/fixed_prefix.template.pl'. -- Regards, Pratyush Yadav