summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add availability check of pre-defined toolsAndre Bossert2022-06-0118-97/+357
| | | | | | | | | | | | | | | | | see: https://git-scm.com/docs/git-difftool see: https://git-scm.com/docs/git-mergetool * now all available tools are printed with "--tool-help" * if no diff.tool or merge.tool is defined the first available pre-defined tool is used TODO: - add mergetools to difftools --> extra change or merge to this - return the exit-code of the tool to jgit / java runtime Bug: 356832 Change-Id: I20fb04e71ced981f5625020f461bbac24e6cec70 Signed-off-by: Andre Bossert <andre.bossert@siemens.com>
* Merge "Add filtering with help of DirCacheCheckout.getContent()"Andrey Loskutov2022-05-3012-257/+483
|\
| * Add filtering with help of DirCacheCheckout.getContent()Andre Bossert2022-05-3012-257/+483
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | see: https://git-scm.com/docs/git-mergetool * refactoring of content (FileElement) handling * now the temporary files are already filled with filtered content in the calling classes (PGM), that can be used with EGit content too TODO: * keep the temporaries when no change detected and the user answers no to the question if the merge was successful Bug: 356832 Change-Id: I86a0a052d059957d4d152c1bb94c262902c377d2 Signed-off-by: Andre Bossert <andre.bossert@siemens.com>
* | Fixed since tags added for new merge constantsAndrey Loskutov2022-05-301-4/+4
|/ | | | | Bug: 356832 Change-Id: I70197522675de0e9b53399ee3d9ed3f10312ff6b
* Merge "Merge branch 'stable-6.1' into stable-6.2"Matthias Sohn2022-05-280-0/+0
|\
| * Merge branch 'stable-6.1' into stable-6.2Matthias Sohn2022-05-270-0/+0
| |\ | | | | | | | | | | | | | | | | | | * stable-6.1: Remove stray files (probes or lock files) created by background threads Change-Id: I7114d68b059a2549fde69fa1b04e45b7bb876804
| | * Merge branch 'stable-6.0' into stable-6.1Matthias Sohn2022-05-273-9/+39
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.0: Remove stray files (probes or lock files) created by background threads Change-Id: Iab21b9776c2ebecd4cad5d015028cadd4b6541db
| | | * Merge branch 'stable-5.13' into stable-6.0Matthias Sohn2022-05-273-9/+39
| | | |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-5.13: Remove stray files (probes or lock files) created by background threads Change-Id: I7af1355a77f14995118145162f6bb8a4f1755f2b
| | | | * Remove stray files (probes or lock files) created by background threadsJames Z.M. Gao2022-05-273-9/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NOTE: port back from master branch. On process exit, it was possible that the filesystem timestamp resolution measurement left behind .probe files or even a lock file for the jgit.config. Ensure the SAVE_RUNNER is shut down when the process exits (via System.exit() or otherwise). Move lf.lock() into the try-finally block when saving the config file. Delete .probe files on JVM shutdown -- they are created in daemon threads that may terminate abruptly, not executing the "finally" clause that normally removes these files. Bug: 579445 Change-Id: Iaee2301eb14e6201406398a90228ad10cfea6098
| * | | | Prepare 6.2.0-SNAPSHOT buildsMatthias Sohn2022-05-2691-125/+125
| | | | | | | | | | | | | | | | | | | | Change-Id: I9d6afd80cc024d6e03aa46bbaaaeec10b60fb485
| * | | | JGit v6.2.0.202205251150-m3v6.2.0.202205251150-m3Matthias Sohn2022-05-2591-125/+125
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I48492aef02c2ea39cec171d84e92643859e064a6 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
| * | | | Merge branch 'master' into stable-6.2Matthias Sohn2022-05-2518-103/+217
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master: RewriteGenerator: Fully buffering of input is no longer necessary Update Orbit to S20220517184036 PackFileSnapshot: Resolve warnings by using "equals" instead of "==" Remove stray files (probes or lock files) created by background threads Change-Id: I1522fcd03fb7ef0d7512b5d0b3bc09271e918c48
* | \ \ \ \ Merge "Add mergetool merge feature (execute external tool)"Andrey Loskutov2022-05-2711-185/+847
|\ \ \ \ \ \
| * | | | | | Add mergetool merge feature (execute external tool)Andre Bossert2022-05-2511-185/+847
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | see: https://git-scm.com/docs/git-mergetool * implement mergetool merge function (execute external tool) * add ExecutionResult and commandExecutionError to ToolException * handle "base not present" case (empty or null base file path) * handle deleted (rm) and modified (add) conflicts * handle settings * keepBackup * keepTemporaries * writeToTemp Bug: 356832 Change-Id: Id323c2fcb1c24d12ceb299801df8bac51a6d463f Signed-off-by: Andre Bossert <andre.bossert@siemens.com>
* | | | | | | Merge "Add command line support for "git mergetool""Andrey Loskutov2022-05-2716-171/+1269
|\| | | | | |
| * | | | | | Add command line support for "git mergetool"Andre Bossert2022-05-2516-171/+1269
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | see: https://git-scm.com/docs/git-mergetool see: https://git-scm.com/docs/git-config * add command line support for "git mergetool" * add option handling for "--tool-help", "--tool=<mytool>", "--[no-]prompt", "--[no-]gui" * handle prompt * add MergeTools * add pre-defined mergetools * print merge actions --> no execute, will be done later Bug: 356832 Change-Id: I6e505ffc3d03f75ecf4bba452a25d25dfcf5793f Signed-off-by: Andre Bossert <andre.bossert@siemens.com>
* | | | | | | Merge "Add config reader for user-defined mergetools"Andrey Loskutov2022-05-276-4/+483
|\| | | | | |
| * | | | | | Add config reader for user-defined mergetoolsAndre Bossert2022-05-256-4/+483
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | see: https://git-scm.com/docs/git-mergetool see: https://git-scm.com/docs/git-config * add config reader for user-defined mergetools * merge.tool * merge.guitool * mergetool.prompt * mergetool.keepBackup * mergetool.keepTemporaries * mergetool.writeToTemp * mergetool.<tool>.path * mergetool.<tool>.cmd * mergetool.<tool>.trustExitCode Bug: 356832 Change-Id: Ic4f07376630713d8e06cbad284d9c72c9ecc0405 Signed-off-by: Andre Bossert <andre.bossert@siemens.com>
* | | | | | | Merge "Add difftool compare feature (execute external tool)"Andrey Loskutov2022-05-2712-97/+894
|\| | | | | |
| * | | | | | Add difftool compare feature (execute external tool)Andre Bossert2022-05-2512-97/+894
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | see: http://git-scm.com/docs/git-difftool * add CommandExecutor that handles tool execution with help of "jgit.FS" * it handles tool execution with temporary created "command file" --> for for all "command interpreters" and parameters with spaces etc. * using of external bash.exe at Windows (MinGW) if shell-script is used as difftool command. It can be enabled with parameter "jgit.usemsys2bash=auto" that checks if command contains ".sh" or enabled / disabled with "jgit.usemsys2bash=true|false" * added special handling for empty files (e.g. deleted, added etc.) that are named "/dev/null" * added creation and deletion of temporary files needed for compare * added own Exception class for reporting to pgm / command line / EGit * added prompt option handling before executing difftool * reworked trustExitCode option for specific difftool and override for all difftools from config and command line * tested with command line options "--[no]-trust-exit-code", "--tool=<toolname>", "--[no]-gui", --[no]-prompt * ContentSource * added close() methods to close / cleanup used resources (like ObjectReader TreeWalk etc.) * added isWorkingTreeSource() methods to check if file can be used from working tree instead of copy from "ObjectLoader / ObjectReader" to temporary file (fixes "difftool <commit> <commit>") Bug: 356832 Change-Id: I5462fb6dbe4ecfd9da7c74117fce4070bbfd4d7a Signed-off-by: Andre Bossert <andre.bossert@siemens.com> Signed-off-by: Simeon Andreev <simeon.danailov.andreev@gmail.com>
* | | | | | | Avoid warning "no explicit project encoding"Michael Keppler2022-05-264-0/+8
| |_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Eclipse 2022-06 raises that warning for each project without explicit encoding. We can avoid the warning by adding explicit project settings for the otherwise implicit encoding. There is no functional change, neither for users of Eclipse nor for users of other IDEs or build tools. Signed-off-by: Michael Keppler <Michael.Keppler@gmx.de> Change-Id: I30a6f1369ef09bd445f5730628d01772db2ee7b3
* | | | | | RewriteGenerator: Fully buffering of input is no longer necessarySimon Sohrt2022-05-254-22/+68
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fully buffering by the previous generator of the input for the RewriteGenerator is no longer necessary. Bug: 577948 Signed-off-by: Simon Sohrt <sohrt@his.de> Change-Id: I59c7a7c7f3766e97627764608bc8dc733804274c
* | | | | Update Orbit to S20220517184036Matthias Sohn2022-05-259-71/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and - net.i2p.crypto.eddsa to 0.3.0.v20220506-1020 - org.bouncycastle.bcpg to 1.70.0.v20220507-1208 - org.bouncycastle.bcprov to 1.70.0.v20220507-1208 Change-Id: Ifc450da0a9b469629b7d3a7e4194a2bc8a2a4403
* | | | | PackFileSnapshot: Resolve warnings by using "equals" instead of "=="Fabio Ponciroli2022-05-202-1/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone raises the following warning: "[ReferenceEquality] Comparison using reference equality instead of value equality" Added Equality#isSameInstance util method to be reused in similar cases. Change-Id: Ifc9885c9806dcafa1c5ee1351d3095bf1517dbf5
* | | | | Remove stray files (probes or lock files) created by background threadsJames Z.M. Gao2022-05-153-9/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On process exit, it was possible that the filesystem timestamp resolution measurement left behind .probe files or even a lock file for the jgit.config. Ensure the SAVE_RUNNER is shut down when the process exits (via System.exit() or otherwise). Move lf.lock() into the try-finally block when saving the config file. Delete .probe files on JVM shutdown -- they are created in daemon threads that may terminate abruptly, not executing the "finally" clause that normally removes these files. Bug: 579445 Change-Id: Ie27aca1fdaddfa487ebe072c3913d78355910df8
* | | | | Merge branch 'stable-6.2'Matthias Sohn2022-05-094-23/+56
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.2: HTTP Smart: set correct HTTP status on error Change-Id: I7bf99b0c720f9dabb65da5cc777281a1d227f5a8
| * | | | Merge branch 'stable-6.1' into stable-6.2Matthias Sohn2022-05-094-23/+56
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.1: HTTP Smart: set correct HTTP status on error Change-Id: I792d6cdfe9e76a3d2e6d1e01ec1dc96805ed2900
| | * | | HTTP Smart: set correct HTTP status on errorSven Selberg2022-05-094-23/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previous behavior was that status code was automatically set to 200 regardless of reported status and according to HTTP Smart protocol[1]: If there is no repository at $GIT_URL, or the resource pointed to by a location matching $GIT_URL does not exist, the server MUST NOT respond with 200 OK response. A server SHOULD respond with 404 Not Found, 410 Gone, or any other suitable HTTP status code which does not imply the resource exists as requested. Since the jgit HTTP client isn't able to handle reading content from a response reporting an error (calling HttpURLConnection#getInputStream on a "failed" connection throws an exception and the internal interface HttpConnection does not expose HttpURLConnection#getErrorStream) the SmartClientSmartServerTest needed to be rewritten to expect the generic response messages. [1] https://git-scm.com/docs/http-protocol#_general_request_processing Bug: 579676 Change-Id: Ibb942d02124a0bc279df09600b091354019ce064
* | | | | Merge branch 'stable-6.2'Matthias Sohn2022-05-050-0/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * stable-6.2: Prepare 6.2.0-SNAPSHOT builds JGit v6.2.0.202205041315-m2 Change-Id: Ia5180f086ac07fe6fa0e68d233ddb963010945b6
| * | | | Prepare 6.2.0-SNAPSHOT buildsMatthias Sohn2022-05-0591-125/+125
| | | | | | | | | | | | | | | | | | | | Change-Id: Ic3788b38d6408e83729caa718c128a5632798a60
| * | | | JGit v6.2.0.202205041315-m2v6.2.0.202205041315-m2Matthias Sohn2022-05-0491-125/+125
|/ / / / | | | | | | | | | | | | | | | | Change-Id: Ie13beac020e79182a4058ba67550bb78b2008833 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* | | | Update list of 3rd party dependenciesMatthias Sohn2022-05-031-24/+26
| | | | | | | | | | | | | | | | Change-Id: I4f8f8ede8b4c788ce2b4db174df4cc1d35350542
* | | | Add target platforms for eclipse 4.23 (2022-03) and 4.24 (2022-06)Matthias Sohn2022-05-034-0/+210
| | | | | | | | | | | | | | | | Change-Id: I6481a0e6e989b8ceefeecced0d7d8609a24d0c9f
* | | | Update Orbit to I20220502200629Matthias Sohn2022-05-0215-33/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | and - com.jcraft.jzlib to 1.1.3.v20220502-1820 Change-Id: I7694f1b793f598c3adb96b5223a5f7b5783a35ec
* | | | [sshd] Better user feedback on authentication failureThomas Wolf2022-05-0112-61/+586
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When authentication fails, JGit produces an exception with an error message telling the user that it could not log in (including the host name). The causal chain has an SshException from Apache MINA sshd with message "No more authentication methods available". This is not very helpful. The user was left without any indication why authentication failed. Include in the exception message a log of all attempted authentications. That way, the user can see which keys were tried, in which order and with which signature algorithms. The log also reports authentication attempts for gssapi-with-mic or password authentication. For keyboard-interactive Apache MINA sshd is lacking a callback interface. The way Apache MINA sshd loads keys from files, the file names are lost in higher layers. Add a mechanism to record on the session for each key fingerprint the file it was loaded from, if any. That way the exception message can refer to keys by file name, which is easier to understand by users than the rather cryptic key fingerprints. Bug: 571390 Change-Id: Ic4b6ce6b99f307d5e798fcc91b16b9ffd995d224 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | Lazy loading of .lfsconfig.Matthias Fromme2022-04-301-21/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Load the '.lfsconfig ' on access instead of trying to load it unconditionally each time an LFS filter is applied. Bug 578020 Change-Id: I986d4e61a736fc83cf00e62a08d8413c6bb53f78
* | | | [releng] bump japicmp base versionThomas Wolf2022-04-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Bump the japicmp base version to 6.1.0.202203080745-r. Change-Id: I54a9ae339fbe2a3a02f438f794caa22c8cbcd02c Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | RefSpec: add missing @sinceThomas Wolf2022-04-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | New API needs an @since 6.2 annotation. Change-Id: I16b01ea820cc651605166acc13591b515541d06b Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | De-couple ServiceLoader calls from class loadingThomas Wolf2022-04-142-28/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the holder pattern to de-couple the loading of super classes from the ServiceLoader calls to set up global instances. This prevents potential lock inversions. Bug: 579550 Change-Id: Ie8284e4d6d680ddd4cc6a486bbefe8ed00266240 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | CommitCommand: call GpgSigner.getDefault() only if indeed signingThomas Wolf2022-04-141-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | If we're not signing the commit, we don't need the GpgSigner at all. Change-Id: Ica35651c73d82b7604c8a67487b0d9474c908aae Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | GpgSigner: prevent class lock inversion on the default signerThomas Wolf2022-04-141-14/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't store the default signer in a static field of the abstract superclass GpgSigner. This many lead to a lock inversion on the class initialization locks if there are concurrent loads of the GpgSigner class and of one of its subclasses, and that subclass happens to be the one the ServiceLoader wants to load. Use the holder pattern to de-couple the loading of class GpgSigner from the ServiceLoader call. Bug: 579550 Change-Id: Ifac0ea0c8985a09fe0518d0dabc072fafd6db907 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
* | | | Fetch: Introduce negative refspecs.yunjieli2022-04-137-8/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement negative refspecs in JGit fetch, following C Git. Git supports negative refspecs in source only while this change supports them in both source and destination. If one branch is equal to any branch or matches any pattern in the negative refspecs collection, the branch will not be fetched even if it's in the toFetch collection. With this feature, users can express more complex patterns during fetch. Change-Id: Iaa1cd4de5c08c273e198b72e12e3dadae7be709f Sign-off-by: Yunjie Li<yunjieli@google.com>
* | | | Merge "Add GetRefsBenchmark for testing refs lookups"Han-Wen NIenhuys2022-04-051-0/+181
|\ \ \ \
| * | | | Add GetRefsBenchmark for testing refs lookupsLuca Milanesio2022-04-011-0/+181
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a new benchmark that shows a typical use-case of opening a cached repository and fetching one ref from a repository with a high number of refs. This specific benchmark is tailored to the Gerrit use-case of reading frequently individual refs SHA1s and by ref-name prefix from the All-Users repository. Include the following variables for the benchmark: - numBranches (from 100 up to 50000) - trustFolderStat (true or false) - useRefTable (true or false) The benchmark needs to be evaluated on a local high-perf SSD and on a slower NFS network disk. Bug: 576165 Change-Id: Ie59a87ca9f0191ff30229688e3430332e2f59a4f
* | | | | BaseSearch: Suppress ReferenceEquality WarningsFabio Ponciroli2022-04-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone raises the following warning: "[ReferenceEquality] Comparison using reference equality instead of value equality" Change-Id: Ib7542506dcdf5a0c7775a99a2c0972930d622879
* | | | | RewriteGenerator: Suppress ReferenceEquality WarningsFabio Ponciroli2022-04-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone raises the following warning: "[ReferenceEquality] Comparison using reference equality instead of value equality" Change-Id: Idfe3f044730019fb49dccee25a0563c6fc01fc6a
* | | | | PlotCommit: Suppress ReferenceEquality WarningsFabio Ponciroli2022-04-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone raises the following warning: "[ReferenceEquality] Comparison using reference equality instead of value equality" Change-Id: Ia0dc2df68c77e40ff509a2c39568abce92525ee9
* | | | | PlotCommitList: Suppress ReferenceEquality WarningsFabio Ponciroli2022-04-011-0/+4
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Errorprone raises the following warning: "[ReferenceEquality] Comparison using reference equality instead of value equality" A single pointer comparison is fine here. A comparison with 'equals' would complicate the code and also impact performance. Change-Id: I6677dfc483acb95a64afbf433fd2b9460e408264
* | | | [pgm tests] Relax version constraints for hamcrestMatthias Sohn2022-03-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We updated hamcrest to 2.2. but there is no need to prevent that older versions of hamcrest can be used. Hence relax the lower bound to 1.1 like in other bundles. Change-Id: I3f2f270d2aabc7d742a585d2fc7f0bce283e2a64
* | | | Use git config core.commentCharThomas Wolf2022-03-267-34/+258
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This concerns committing, creating merge conflict messages and creating and editing squash messages. In a squash message, once the comment character has been determined initially is always the first character. Note that if core.commentChar=auto and there is a sequence of squashes, it may be necessary to change the comment character when a new message is added. Bug: 579325 Change-Id: Idca19284a0240cd322e7512ea299a03658e1b2c1 Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>