* bug#23076: 24.5; vc-git: add a new variable for log output coding system @ 2016-03-21 11:51 Nikolay Kudryavtsev 2016-03-21 19:01 ` Nikolay Kudryavtsev 0 siblings, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-03-21 11:51 UTC (permalink / raw) To: 23076 [-- Attachment #1: Type: text/plain, Size: 1140 bytes --] This is a feature request that depends on resolution of 23075 <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=23075>. Git for windows expects one coding system for log input, but returns a different one in log output. In my specific example, with Russian language, I have to set up vc-git-commits-coding-system to windows-1251. But then, log output would still be in utf-8. Of course I can change this by setting git variable logoutputencoding, but this would screw up command line git log output. See this thread on help-gnu-emacs <https://lists.gnu.org/archive/html/help-gnu-emacs/2014-11/msg00426.html> and this thread on Git for Windows google group <https://groups.google.com/forum/#%21topic/msysgit/1YQKCNhWTqo> for more details. So, I propose adding another variable called vc-git-log-output-coding-system, that would serve as emacs counterpart to git's logoutputencoding, just as vc-git-commits-coding-system serves a counterpart to commitencoding. When and if 23075 is fixed we can just set coding-system-for-read to this new variable(whenever it's set) in vc-git-print-log. -- Best Regards, Nikolay Kudryavtsev [-- Attachment #2: Type: text/html, Size: 1498 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-03-21 11:51 bug#23076: 24.5; vc-git: add a new variable for log output coding system Nikolay Kudryavtsev @ 2016-03-21 19:01 ` Nikolay Kudryavtsev 2016-04-02 10:16 ` Eli Zaretskii 0 siblings, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-03-21 19:01 UTC (permalink / raw) To: 23076 Since I did this for the other one, here are more detailed steps on how to repeat this: 1. (setq vc-git-commits-coding-system 'windows-1251) 2. Clone https://github.com/sg2002/vc-git-bugs 3. Run vc-log on it. This would give you broken output. 4. Evaluate the whole fix.el file from the repo. 5. Run vc-log again. Now you would get the proper "Русскоязычный коммит." in it. Adding a new variable is the only way to setup git with Russian commit logs on Windows, while fulfilling all three of the following requirements: 1. Committing from Emacs in Russian should work. 2. vc-log should work in Emacs. 3. git log should work outside of Emacs. The same should be true for other non-latin alphabets. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-03-21 19:01 ` Nikolay Kudryavtsev @ 2016-04-02 10:16 ` Eli Zaretskii 2016-04-03 20:34 ` Nikolay Kudryavtsev 0 siblings, 1 reply; 19+ messages in thread From: Eli Zaretskii @ 2016-04-02 10:16 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076 > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Date: Mon, 21 Mar 2016 22:01:59 +0300 > > 1. (setq vc-git-commits-coding-system 'windows-1251) > 2. Clone https://github.com/sg2002/vc-git-bugs > 3. Run vc-log on it. This would give you broken output. > 4. Evaluate the whole fix.el file from the repo. > 5. Run vc-log again. Now you would get the proper "Русскоязычный > коммит." in it. (By "vc-log", I presume you meant "C-x v l". There's no vc-log command, AFAICT.) Please try the latest emacs-25 branch in the Emacs repository and tell which problems for this bug remain. I actually don't understand the reasons for the 1st step above: the log message is reported by Git in UTF-8, so if I avoid the first step, then step 3 produces the correct output. > Adding a new variable is the only way to setup git with Russian commit > logs on Windows, while fulfilling all three of the following requirements: > 1. Committing from Emacs in Russian should work. > 2. vc-log should work in Emacs. > 3. git log should work outside of Emacs. So if any problems remain, they are either in 1. Committing from Emacs in Russian should work. or in 3. git log should work outside of Emacs. Please tell which one(s) of these don't work, and why. I tried "git log" outside of Emacs, and it produced UTF-8 output. If it doesn't do that for you, perhaps you've customized Git itself? If so, what happens if you remove that customization? As for committing from Emacs in Russian, that should again work if you use UTF-8, so I'm unsure what problems prevent you from having that. Thanks. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-02 10:16 ` Eli Zaretskii @ 2016-04-03 20:34 ` Nikolay Kudryavtsev 2016-04-04 15:22 ` Eli Zaretskii 0 siblings, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-04-03 20:34 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 Hello Eli. Just to explain the underlying issue. With emacs -Q try committing to the same repository by copy-pasting the previous commit message. Then do git log from shell. Your commit message would get broken. This happens because git on Windows expects the commit message to be in your Windows "language for non-Unicode programs" encoding. Then it recodes from it to utf-8. So, to be able to commit in russian we: 1. Change language for non-Unicode programs to russian. 2. (setq vc-git-commits-coding-system 'windows-1251) After doing this, commiting in russian would work. But now our C-x v l is broken. We can either fix it by setting logoutputencoding in git, but this would break git log outside of emacs, or add a new variable to vc, and that's what I want. That's a relatively recent change in git, from 2013 or 2014, so if you're using some really old version, everything might just work out of box. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-03 20:34 ` Nikolay Kudryavtsev @ 2016-04-04 15:22 ` Eli Zaretskii 2016-04-08 8:23 ` Eli Zaretskii 2016-04-09 12:30 ` Nikolay Kudryavtsev 0 siblings, 2 replies; 19+ messages in thread From: Eli Zaretskii @ 2016-04-04 15:22 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076 > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Cc: 23076@debbugs.gnu.org > Date: Sun, 3 Apr 2016 23:34:13 +0300 > > Hello Eli. > > Just to explain the underlying issue. Thanks. > With emacs -Q try committing to the same repository by copy-pasting the previous commit message. Then do git log from shell. Your commit message would get broken. > > This happens because git on Windows expects the commit message to be in your Windows "language for non-Unicode programs" encoding. Then it recodes from it to utf-8. I think this conclusion is wrong. The real reason for the problem is that Emacs on Windows invokes subordinate programs in a way that non-ASCII characters in the command-line arguments can only be encoded in the system codepage. And Emacs uses the -m command-line argument to pass the commit log message to Git. IOW, the problem is not with Git, the problem is with how Emacs on Windows invokes it. (For complicated reasons I won't go into, this general problem cannot be easily fixed in Emacs.) So any non-ASCII text encoded in some encoding other than the current system codepage will become garbled even before it gets to Git. > So, to be able to commit in russian we: > 1. Change language for non-Unicode programs to russian. > 2. (setq vc-git-commits-coding-system 'windows-1251) This solution doesn't really work for the reasons explained above. > After doing this, commiting in russian would work. But now our C-x v l is broken. "C-x v l" is broken because it uses the same value of vc-git-commits-coding-system to read what Gt outputs, whereas Git outputs in UTF-8. > We can either fix it by setting logoutputencoding in git, but this would break git log outside of emacs, or add a new variable to vc, and that's what I want. I don't think this is the right solution, see below. > That's a relatively recent change in git, from 2013 or 2014, so if you're using some really old version, everything might just work out of box. I have Git 2.8.0, the latest official release. Since the problem is (a) specific to MS-Windows, and (b) related to encoding the command-line arguments, the solution should target the root cause and nothing else, IMO. Introducing a separate variable that users should need to configure sounds therefore as not the best idea. Moreover, on MS-Windows any value of that additional variable that is not exactly equal to the current system codepage will simply fail to work. So instead, I can suggest one of the following alternatives, to be done only when invoking Git to commit on MS-Windows: 1) ignore vc-git-commits-coding-system and always encode the command-line arguments using the system locale (in your case, codepage 1251); or 2) put the log message in a temporary file, encoded in vc-git-commits-coding-system, then use -F instead of -m; the rest of command-line arguments will be encoded in the system locale's codepage The 1st solution is essentially what you wanted, but without the need to introduce an additional variable or ask the users to configure it. The 2nd solution is somewhat slower, but it is better, because it will allow to write log messages using any characters, not just those representable in the current codepage. Note that it still doesn't solve all the problems with non-ASCII characters, because those could be in the "author" or any of the other arguments with which we call Git, such as the names of the files whose changes are to be committed (as Emacs does support arbitrary characters in file names). Comments? ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-04 15:22 ` Eli Zaretskii @ 2016-04-08 8:23 ` Eli Zaretskii 2016-04-09 12:30 ` Nikolay Kudryavtsev 1 sibling, 0 replies; 19+ messages in thread From: Eli Zaretskii @ 2016-04-08 8:23 UTC (permalink / raw) To: nikolay.kudryavtsev; +Cc: 23076 > Date: Mon, 04 Apr 2016 18:22:30 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 23076@debbugs.gnu.org > > So instead, I can suggest one of the following alternatives, to be > done only when invoking Git to commit on MS-Windows: > > 1) ignore vc-git-commits-coding-system and always encode the > command-line arguments using the system locale (in your case, > codepage 1251); or > > 2) put the log message in a temporary file, encoded in > vc-git-commits-coding-system, then use -F instead of -m; the rest > of command-line arguments will be encoded in the system locale's > codepage > > The 1st solution is essentially what you wanted, but without the need > to introduce an additional variable or ask the users to configure it. > > The 2nd solution is somewhat slower, but it is better, because it will > allow to write log messages using any characters, not just those > representable in the current codepage. Note that it still doesn't > solve all the problems with non-ASCII characters, because those could > be in the "author" or any of the other arguments with which we call > Git, such as the names of the files whose changes are to be committed > (as Emacs does support arbitrary characters in file names). > > Comments? Ping! ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-04 15:22 ` Eli Zaretskii 2016-04-08 8:23 ` Eli Zaretskii @ 2016-04-09 12:30 ` Nikolay Kudryavtsev 2016-04-09 12:50 ` Eli Zaretskii 1 sibling, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-04-09 12:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 My suggestion was based on the idea that introducing a new variable is guaranteed to not break anyone's setup. Solution 1 seems to be more dangerous in this regard. Also #1 seems inferior to #2 for this case - what if you don't have control over system non-Unicode encoding? Let's say someone wants to commit org-mode notes in his native language, from a workplace, where he has no admin rights for the machine and no ability to change that windows setting. That's probably a rare case, but still, seems like something that may happen. I also did some testing of #2 and noted this thing - the current git behaves somewhat weirdly in regards with git commitencoding and message files. That is: 1. Let's say your message.txt is encoded in windows-1251. Trying to commit it with "git commit -F message.txt" would result in a broken commit and this: > Warning: commit message did not conform to UTF-8. > You may want to amend it after fixing the message, or set the config > variable i18n.commitencoding to the encoding your project uses. 2. Let's try doing so and set commitencoding to windows-1251 and commit again. Now we get no warning, but our message is a badly coded mess, though differently from the previous step, so it did something extra while encoding the message. 3. Even when our commitencoding = windows-1251 committing message.txt in utf-8 works fine. So, it seems like we want to always use utf-8 for messages. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-09 12:30 ` Nikolay Kudryavtsev @ 2016-04-09 12:50 ` Eli Zaretskii 2016-04-09 14:14 ` Nikolay Kudryavtsev 0 siblings, 1 reply; 19+ messages in thread From: Eli Zaretskii @ 2016-04-09 12:50 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076 > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Cc: 23076@debbugs.gnu.org > Date: Sat, 9 Apr 2016 15:30:02 +0300 > > My suggestion was based on the idea that introducing a new variable is > guaranteed to not break anyone's setup. > > Solution 1 seems to be more dangerous in this regard. How can it break someone's setup, if using the current system codepage is the _only_ way of invoking programs from Emacs on MS-Windows? If someone has setup that doesn't already follow this, their setup is already broken. > Also #1 seems inferior to #2 for this case - what if you don't have > control over system non-Unicode encoding? Are we talking about MS-Windows here? If so, no control of non-Unicode encoding is needed, we only need to _obey_ that encoding. Emacs always knows what that encoding is, so we just need to use it. Am I missing something? > Let's say someone wants to commit org-mode notes in his native > language, from a workplace, where he has no admin rights for the > machine and no ability to change that windows setting. That's > probably a rare case, but still, seems like something that may > happen. The solutions I proposed don't require changing any system-wide settings. They just _use_ the _existing_ settings to encode non-ASCII characters passed to Git via its command-line arguments. Submitting the commit message via a temporary file doesn't need to use the system codepage, it should use UTF-8, which allows to use almost any character in any language. > I also did some testing of #2 and noted this thing - the current git > behaves somewhat weirdly in regards with git commitencoding and message > files. That is: > 1. Let's say your message.txt is encoded in windows-1251. Trying to > commit it with "git commit -F message.txt" would result in a broken > commit and this: > > Warning: commit message did not conform to UTF-8. > > You may want to amend it after fixing the message, or set the config > > variable i18n.commitencoding to the encoding your project uses. Files submitted via -F should always be in UTF-8. If we adopt #2, Emacs will encode the message in UTF-8 when it writes the file which will then be submitted to Git via -F. > 2. Let's try doing so and set commitencoding to windows-1251 and commit > again. Now we get no warning, but our message is a badly coded mess, > though differently from the previous step, so it did something extra > while encoding the message. > 3. Even when our commitencoding = windows-1251 committing message.txt in > utf-8 works fine. > > So, it seems like we want to always use utf-8 for messages. Yes, and that's what I had in mind for alternative #2. So given these clarifications, which alternative is preferable, in your opinion? ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-09 12:50 ` Eli Zaretskii @ 2016-04-09 14:14 ` Nikolay Kudryavtsev 2016-04-09 14:48 ` Eli Zaretskii 0 siblings, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-04-09 14:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 Ok, I was actually wrong in my last message, that file with commit message should always be in the same encoding as git commitencoding. There's no weirdness. > How can it break someone's setup, if using the current system codepage > is the_only_ way of invoking programs from Emacs on MS-Windows? Download this: https://github.com/msysgit/msysgit/releases/download/Git-1.7.9-preview20120201/PortableGit-1.7.9-preview20120201.7z Then, from emacs -Q: (setq vc-git-program "d:/Downloads/PortableGit/bin/git.exe") Note that the git is used from bin, and not from cmd. Russian commits do work with this version, when vc-git-commits-coding system is utf-8. That's why I kept blaming git. So we can define breaking someone's setup - if that someone uses this old git version, forcing windows-1251 would break his setup. 1.7.9 is the last working version. > Am I missing something? No, I just provided a practical example of: > The 2nd solution is somewhat slower, but it is better, because it will > allow to write log messages using any characters, not just those > representable in the current codepage In the end, of course I like solution #2. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-09 14:14 ` Nikolay Kudryavtsev @ 2016-04-09 14:48 ` Eli Zaretskii 2016-04-10 16:10 ` Eli Zaretskii 0 siblings, 1 reply; 19+ messages in thread From: Eli Zaretskii @ 2016-04-09 14:48 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076 > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Cc: 23076@debbugs.gnu.org > Date: Sat, 9 Apr 2016 17:14:07 +0300 > > > How can it break someone's setup, if using the current system codepage > > is the_only_ way of invoking programs from Emacs on MS-Windows? > Download this: > https://github.com/msysgit/msysgit/releases/download/Git-1.7.9-preview20120201/PortableGit-1.7.9-preview20120201.7z > Then, from emacs -Q: > (setq vc-git-program "d:/Downloads/PortableGit/bin/git.exe") > Note that the git is used from bin, and not from cmd. Russian commits do > work with this version, when vc-git-commits-coding system is utf-8. This cannot work except by accident, and/or for only some specific characters. Windows attempts to translate non-ASCII characters passed to programs to the current codepage, so a byte that is not possible in the codepage will be mangled. For example, try a log message that uses a UTF-8 string which has a 0x98 byte in it -- the only byte that is not a valid cp1251 character -- you will see it mangled on the Git side. > So we can define breaking someone's setup - if that someone uses this > old git version, forcing windows-1251 would break his setup. > 1.7.9 is the last working version. Even if I'm wrong about this, v1.7.9 is too old to care about. It's too easy to upgrade. > In the end, of course I like solution #2. Thanks, I will work on implementing it. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-09 14:48 ` Eli Zaretskii @ 2016-04-10 16:10 ` Eli Zaretskii 2016-04-11 22:12 ` Nikolay Kudryavtsev 2016-04-12 15:07 ` Nikolay Kudryavtsev 0 siblings, 2 replies; 19+ messages in thread From: Eli Zaretskii @ 2016-04-10 16:10 UTC (permalink / raw) To: nikolay.kudryavtsev; +Cc: 23076 > Date: Sat, 09 Apr 2016 17:48:13 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 23076@debbugs.gnu.org > > > In the end, of course I like solution #2. > > Thanks, I will work on implementing it. Done, see the latest emacs-25 branch. Let me add a few comments to past discussions: > 1. Let's say your message.txt is encoded in windows-1251. Trying to commit it with "git commit -F message.txt" would result in a broken commit and this: > > Warning: commit message did not conform to UTF-8. > You may want to amend it after fixing the message, or set the config > variable i18n.commitencoding to the encoding your project uses. > > 2. Let's try doing so and set commitencoding to windows-1251 and commit again. Now we get no warning, but our message is a badly coded mess, though differently from the previous step, so it did something extra while encoding the message. That's not what I see. What I see is that the warning is gone, and "git log" produces the log message in its original encoding, i.e. windows-1251 in your case. You didn't say what kind of "badly coded mess" you saw, but one suggestion is to redirect the output of "git log" to a file, and then visit that file with windows-1251 as its encoding (i.e. "C-x RET c cp1251 RET C-x C-f THE-FILE RET"). I'm quite sure you will see your log message intact. One other thing to keep in mind is that Git apparently records the value of commitencoding which was in effect at the time of the commit, so changing the value will only affect future commits. > 3. Even when our commitencoding = windows-1251 committing message.txt in utf-8 works fine. > > So, it seems like we want to always use utf-8 for messages. My conclusion from these experiments is different. It seems like Git simply records the log messages and outputs them without any conversions or interpretation, disregarding i18n.commitEncoding. Which is consistent with the documentation: i18n.commitEncoding Character encoding the commit messages are stored in; Git itself does not care per se, but this information is necessary e.g. when importing commits from emails or in the gitk graphical history browser Note the "Git itself doesn't care" part. (I don't understand the part about importing commits from emails -- what do they mean by "important"?) I think i18n.commitEncoding is only important if i18n.logOutputEncoding is set as well, and only if it's set to a different value (or if you use the --encode option to "git log", and specify a different encoding). Then, and only then, the encoding of the log message is important, because Git will attempt to re-encode it into the output encoding. With that in mind, I eventually decided to also add a customizable option vc-git-log-output-coding-system, that should shadow the i18n.logOutputEncoding setting. Please try the latest emacs-25 branch, both without any customizations of commit and log-output encoding, and with them. I think the problems you described should now be gone, as long as you keep the values of vc-git-commits-coding-system and vc-git-log-output-coding-system in sync with the corresponding Git config values. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-10 16:10 ` Eli Zaretskii @ 2016-04-11 22:12 ` Nikolay Kudryavtsev 2016-04-12 15:07 ` Nikolay Kudryavtsev 1 sibling, 0 replies; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-04-11 22:12 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 Eli, sorry for not describing this before in more details, but my data in those 3 points was wrong, as I said in the next letter after that one. So here's how -F flag actually behaves with regards to encodings: 1. When you try to commit using the -F flag with Russian message.txt in windows-1251, it gives that warning: > Warning: commit message did not conform to UTF-8. > You may want to amend it after fixing the message, or set the config > variable i18n.commitencoding to the encoding your project uses. Then it recodes the log message as windows-1252(sic!). So the russian: Коммит. Would become: Êîììèò. 2. Doing the same while having commitencoding = windows-1251 results in a legitimate commit. 3. Having message.txt in utf-8 and commitencoding = windows-1251 results in: РљРѕРјРјРёС‚. This is utf-8 recoded to windows-1251. > My conclusion from these experiments is different. It seems like Git > simply records the log messages and outputs them without any > conversions or interpretation, disregarding i18n.commitEncoding. That's not true. commitencoding has the immediate effect on the log encoding. You can see this by setting commitencoding = windows-1251 and doing git log for that test repo. Log output is decoded by commitencoding, but logoutputencoding overrides it. You can test this by: commitencoding = windows-1251 logoutputencoding = utf-8 This would make git log work again for that repo. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-10 16:10 ` Eli Zaretskii 2016-04-11 22:12 ` Nikolay Kudryavtsev @ 2016-04-12 15:07 ` Nikolay Kudryavtsev 2016-04-12 15:22 ` Eli Zaretskii 1 sibling, 1 reply; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-04-12 15:07 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 After testing the latest Emacs 25 dev branch, I can confirm that this bug is fixed. Commit messages are displayed correctly as long as they were committed with the same value of commitEncoding. Eli, thanks for all your help. -- Best Regards, Nikolay Kudryavtsev ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-04-12 15:07 ` Nikolay Kudryavtsev @ 2016-04-12 15:22 ` Eli Zaretskii 0 siblings, 0 replies; 19+ messages in thread From: Eli Zaretskii @ 2016-04-12 15:22 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076-done > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Cc: 23076@debbugs.gnu.org > Date: Tue, 12 Apr 2016 18:07:30 +0300 > > After testing the latest Emacs 25 dev branch, I can confirm that this > bug is fixed. > > Commit messages are displayed correctly as long as they were committed > with the same value of commitEncoding. > > Eli, thanks for all your help. Thanks, closing. ^ permalink raw reply [flat|nested] 19+ messages in thread
[parent not found: <acdfa136-1d37-a920-b572-fdd0f6e11257@gmail.com>]
[parent not found: <837fch1vmw.fsf@gnu.org>]
* bug#23076: 24.5; vc-git: add a new variable for log output coding system [not found] ` <837fch1vmw.fsf@gnu.org> @ 2016-07-25 18:46 ` Nikolay Kudryavtsev 2016-07-25 19:10 ` Eli Zaretskii 2016-08-07 12:08 ` Michael Albinus 0 siblings, 2 replies; 19+ messages in thread From: Nikolay Kudryavtsev @ 2016-07-25 18:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 23076 [-- Attachment #1: Type: text/plain, Size: 283 bytes --] Here's a patch that fixes vc-git commits over tramp on windows. I don't have the papers signed, but I think this counts as a trivial change. If not I'm willing to sign them. Hope this would be applied into emacs-25 before release. Thanks. -- Best Regards, Nikolay Kudryavtsev [-- Attachment #2: remote-vc-git-windows.patch --] [-- Type: text/plain, Size: 2387 bytes --] diff --git lisp/vc/vc-git.el lisp/vc/vc-git.el index 9eac5b2..dd2f7af 100644 *** lisp/vc/vc-git.el --- lisp/vc/vc-git.el *************** *** 705,718 **** ;; arguments must be in the system codepage, and therefore ;; might not support the non-ASCII characters in the log ;; message. ! (if (eq system-type 'windows-nt) (make-temp-file "git-msg")))) (cl-flet ((boolean-arg-fn (argument) (lambda (value) (when (equal value "yes") (list argument))))) ;; When operating on the whole tree, better pass "-a" than ".", since "." ;; fails when we're committing a merge. (apply 'vc-git-command nil 0 (if only files) ! (nconc (if msg-file (list "commit" "-F" msg-file) (list "commit" "-m")) (let ((args (log-edit-extract-headers --- 705,731 ---- ;; arguments must be in the system codepage, and therefore ;; might not support the non-ASCII characters in the log ;; message. ! (if (eq system-type 'windows-nt) ! (if (file-remote-p file1) ! (let ((vec (tramp-dissect-file-name file1))) ! (tramp-make-tramp-file-name ! (tramp-file-name-method vec) ! (tramp-file-name-user vec) ! (tramp-file-name-host vec) ! (tramp-make-tramp-temp-file vec))) ! (make-temp-file "git-msg"))))) (cl-flet ((boolean-arg-fn (argument) (lambda (value) (when (equal value "yes") (list argument))))) ;; When operating on the whole tree, better pass "-a" than ".", since "." ;; fails when we're committing a merge. (apply 'vc-git-command nil 0 (if only files) ! (nconc (if msg-file ! (list "commit" "-F" ! (if (file-remote-p msg-file) ! (tramp-file-name-localname ! (tramp-dissect-file-name msg-file)) ! msg-file)) (list "commit" "-m")) (let ((args (log-edit-extract-headers ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-07-25 18:46 ` Nikolay Kudryavtsev @ 2016-07-25 19:10 ` Eli Zaretskii 2016-07-26 19:01 ` Michael Albinus 2016-08-07 12:08 ` Michael Albinus 1 sibling, 1 reply; 19+ messages in thread From: Eli Zaretskii @ 2016-07-25 19:10 UTC (permalink / raw) To: Nikolay Kudryavtsev, Michael Albinus; +Cc: 23076 > From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> > Cc: 23076@debbugs.gnu.org > Date: Mon, 25 Jul 2016 21:46:27 +0300 > > Here's a patch that fixes vc-git commits over tramp on windows. Thanks. Michael, could you please review this? > I don't have the papers signed, but I think this counts as a trivial > change. If not I'm willing to sign them. Yes, it's small enough. But I encourage you to start the paperwork rolling anyway, so we could continue accepting your contributions in the future. > Hope this would be applied into emacs-25 before release. Sorry, too late for that: the first release candidate is already out. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-07-25 19:10 ` Eli Zaretskii @ 2016-07-26 19:01 ` Michael Albinus 2016-07-27 2:36 ` Eli Zaretskii 0 siblings, 1 reply; 19+ messages in thread From: Michael Albinus @ 2016-07-26 19:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Nikolay Kudryavtsev, 23076 Eli Zaretskii <eliz@gnu.org> writes: >> Here's a patch that fixes vc-git commits over tramp on windows. > > Thanks. Michael, could you please review this? In general, it looks OK. Although I have reservations to use Tramp internal functions outside the Tramp package. But there's no Tramp equivalent to make-temp-file yet. Maybe we shall add such a function? Best regards, Michael. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-07-26 19:01 ` Michael Albinus @ 2016-07-27 2:36 ` Eli Zaretskii 0 siblings, 0 replies; 19+ messages in thread From: Eli Zaretskii @ 2016-07-27 2:36 UTC (permalink / raw) To: Michael Albinus; +Cc: nikolay.kudryavtsev, 23076 > From: Michael Albinus <michael.albinus@gmx.de> > Cc: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>, 23076@debbugs.gnu.org > Date: Tue, 26 Jul 2016 21:01:13 +0200 > > Eli Zaretskii <eliz@gnu.org> writes: > > >> Here's a patch that fixes vc-git commits over tramp on windows. > > > > Thanks. Michael, could you please review this? > > In general, it looks OK. Although I have reservations to use Tramp > internal functions outside the Tramp package. But there's no Tramp > equivalent to make-temp-file yet. Maybe we shall add such a function? Yes, I think we should. ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#23076: 24.5; vc-git: add a new variable for log output coding system 2016-07-25 18:46 ` Nikolay Kudryavtsev 2016-07-25 19:10 ` Eli Zaretskii @ 2016-08-07 12:08 ` Michael Albinus 1 sibling, 0 replies; 19+ messages in thread From: Michael Albinus @ 2016-08-07 12:08 UTC (permalink / raw) To: Nikolay Kudryavtsev; +Cc: 23076 Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com> writes: > Here's a patch that fixes vc-git commits over tramp on windows. > > I don't have the papers signed, but I think this counts as a trivial > change. If not I'm willing to sign them. > > Hope this would be applied into emacs-25 before release. I've committed a simplified version of this patch to the master branch. > Thanks. Best regards, Michael. ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2016-08-07 12:08 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-21 11:51 bug#23076: 24.5; vc-git: add a new variable for log output coding system Nikolay Kudryavtsev 2016-03-21 19:01 ` Nikolay Kudryavtsev 2016-04-02 10:16 ` Eli Zaretskii 2016-04-03 20:34 ` Nikolay Kudryavtsev 2016-04-04 15:22 ` Eli Zaretskii 2016-04-08 8:23 ` Eli Zaretskii 2016-04-09 12:30 ` Nikolay Kudryavtsev 2016-04-09 12:50 ` Eli Zaretskii 2016-04-09 14:14 ` Nikolay Kudryavtsev 2016-04-09 14:48 ` Eli Zaretskii 2016-04-10 16:10 ` Eli Zaretskii 2016-04-11 22:12 ` Nikolay Kudryavtsev 2016-04-12 15:07 ` Nikolay Kudryavtsev 2016-04-12 15:22 ` Eli Zaretskii [not found] <acdfa136-1d37-a920-b572-fdd0f6e11257@gmail.com> [not found] ` <837fch1vmw.fsf@gnu.org> 2016-07-25 18:46 ` Nikolay Kudryavtsev 2016-07-25 19:10 ` Eli Zaretskii 2016-07-26 19:01 ` Michael Albinus 2016-07-27 2:36 ` Eli Zaretskii 2016-08-07 12:08 ` Michael Albinus
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git 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 read-only IMAP folder(s) and NNTP newsgroup(s).