summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* sanitize-commit: don't make unknown cherry-pick SHA-1's fatalHEADmasterMarc Mutz2025-07-011-1/+1
| | | | | | | | | | | | | | | The SHA-1 might just be from the tqtc- version of the repo and so this bot complaint should be overridable by reviewers. So don't issue a -2 in this case. We had at least one cherry-pick from lts-6.5 to dev where this is blocking. As a drive-by, on reviewer request, also change the warning message itself. Change-Id: Ifc7c4c5129bf9ad921bb6aba737b1a7076476d2c Reviewed-by: Volker Hilsheimer <[email protected]>
* util/normalize: parse at the 8-bit levelMarc Mutz2025-06-051-12/+11
| | | | | | | | | | | | | | | | Like so much Qt code overusing UTF-16, the old code converted each line into a QString, and then, to feed into normalizedSignature(), back into 8-bit, and then back into UTF-16 and then, when modifying, back to 8-bit. Just do everything in 8-bit. Yes, this means setFöö() will likely not work anymore when source code is encoded in UTF-8, but MOC can't store that, anyway, AFAIK, so we're not losing anything. If it becomes a problem, it's easy to fix in isValidIdentifier(). Change-Id: Ibf03032ed892c968db3db2f28c188455317d3377 Reviewed-by: Fabian Kosmale <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* util/normalize: remove the line-length limitationMarc Mutz2025-06-051-1/+1
| | | | | | | | There's no reason to limit the readLine() call to 16KiB, so don't. Change-Id: I83f3c7b9ce4c7ef07a8940764153e35608dd9b25 Reviewed-by: Ivan Solovev <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* util/normalize: scan more than just .cpp filesMarc Mutz2025-06-041-2/+37
| | | | | | | | | | | There's no reason why SIGNAL()/SLOT() usage should be limited to .cpp files, and, indeed, running normalize on qt5.git with this change applied produces additional hits in headers, Obj-C++ and qdoc files. Also add some other file types that may contain SIGNAL/SLOT macros. Change-Id: I65082bcf54e977e55f8cb1f95d7a84ede087c9d2 Reviewed-by: Ivan Solovev <[email protected]>
* sanitize-commit: Validate Coverity-Id footersMarc Mutz2025-06-041-1/+6
| | | | | | | | | | | | | | | | | Like for other footers, complain if - the capitalization is wrong - more than one CID is listed per line - the CIDs are not numerical (catching Coverity-Id: CID-12345) - the CIDs start with a leading zero (012 could be interpreted as octal, and there's no tradition to use leading zeros for CIDs, unlike, e.g. for QUIPs) Change-Id: Ibb2fa705aad5a43b0e5d11895e019e2873cfdfe8 Reviewed-by: Edward Welbourne <[email protected]>
* Update README file for normalize toolSergio Ahumada2025-06-031-4/+5
| | | | | | Change-Id: Iee6e989e593d8d9f14cdb362746f3a09ce1e5d2b Reviewed-by: Orgad Shaneh <[email protected]> Reviewed-by: Marc Mutz <[email protected]>
* sanitize-commit: Validate QUIP footersMarc Mutz2025-05-061-0/+5
| | | | | | | | | | | | | | | | | Like for other footers, complain if - the capitalization is wrong - more than one QUIP is listed per line - the QUIPs are not numerical (catching QUIP: QUIP-0004) Unlike Coverity-Id, there is a tradition to write QUIP numbers with leading zeros (QUIP-0004), so allow that here. Task-number: QTQAINFRA-7033 Change-Id: I8a2302054f3205d8c1777c42f28671de79812c20 Reviewed-by: Daniel Smith <[email protected]>
* sanitize-commit: Recognize "QUIP" as a footerMarc Mutz2025-05-061-1/+1
| | | | | | | | | | | | | | | Having no hyphen and not being one of the known hyphen-less footer names, "QUIP" was not recognized as a footer. Fix by including it in the list of known footer names. Relaxing the regexp to not require a hyphen would probably cause too many false-positives. See various uses of QUIP: 19 and QUIP: 23 as footers in merged commits. Fixes: QTQAINFRA-7033 Change-Id: I57ec60c0a8056b196fba3ce70ffab45cf2fffe2f Reviewed-by: Daniel Smith <[email protected]>
* Add hint for qWait usageDaniel Smith2025-05-061-0/+3
| | | | | | | | | | | | | usage of qWait in tests is prone to flakiness, especially when used as a workaround for a race condition. Discourage its use; detail in the Early Warning System wiki offers suggestions for better alternatives. Task-number: QTQAINFRA-7156 Change-Id: I836864d80f237218b36ce725285c0cb2f68eee5b Reviewed-by: Axel Spoerl <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Audun Sutterud <[email protected]>
* Add .gitreview filePaul Wicking2025-03-251-0/+4
| | | | | | | | | | | | | | | | | | | `git-review` is a command line tool for interacting with Gerrit. Some IDEs offer support for this tool, either natively or through plugins. The tool relies on a configuration file, .gitreview. Adding this configuration file to our repositories simplifies initial setup for contributors that use the tool directly or through their IDE of choice. The configuration file adds a remote called 'gerrit'. This is the default for the tool, and also the name set for codereview.qt-project.org by Qt's `init-repository` script. Thus, the configuration should work seamlessly alongside other repository helpers. Task-number: QTBUG-132604 Change-Id: If16a5402b012637aa298df862f03006f7deb6984 Reviewed-by: Joerg Bornemann <[email protected]>
* gpush/gpick: fix a few typosOswald Buddenhagen2025-03-172-5/+5
| | | | | Change-Id: I665620a532b686c8f1b9573d6f6fe8459af226a6 Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush/gpick: accept commits without Change-id on Change refsOswald Buddenhagen2025-03-173-4/+4
| | | | | | | | | | when an upstream is rewound, direct-pushed commits without a Change-id may suddenly show up on Change refs. there is nothing the user can do about this, so just accept them and expect the consumer code to be able to deal with this. Change-Id: I474472aaa0b533920e5133cf7036a82e0c162599 Reviewed-by: Tor Arne Vestbø <[email protected]>
* Update Real Name check to be friendlierDaniel Smith2025-03-051-2/+2
| | | | | | | | | | | | | Discussion on this issue concluded that "suspicious" may be too ambiguous and potentially misinterpreted by non-native english speakers. In order to be clearer for all users, a more neutral "unexpected form" is now used when directing users to the Early Warning System page. Task-number: QTQAINFRA-6987 Change-Id: I05e21e156fee4c5d56ce3b81695d14f99f826a2d Reviewed-by: Paul Wicking <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* qt6_tool/Windows: Fix mis-detection of clang/g++ when in path by coincidenceFriedemann Kleint2025-02-201-1/+3
| | | | | | | Force cl.exe within a Visual Studio environment. Change-Id: I1b73426718b213383243f926d8e33ad039e34105 Reviewed-by: Cristian Maureira-Fredes <[email protected]>
* qt6_tool: Update handling of branchesFriedemann Kleint2024-11-041-3/+6
| | | | | | | | qtqa now gets version branches, too. Switch qtrepotools to master, automatically. Change-Id: Iabda71551a1332c485ea131ce291334208d4cf42 Reviewed-by: Joerg Bornemann <[email protected]>
* qt6_tool: Adapt to rewrite of init_repositoryFriedemann Kleint2024-11-041-2/+5
| | | | | | | Adapt to qt5/29019c9caee083779d1db1ab1d487594cd835735. Change-Id: I361fa21266eb8e9f4a73fb73113bd6b70e40128c Reviewed-by: Joerg Bornemann <[email protected]>
* git-gpull: Pass arguments after -- to git-pullJoerg Bornemann2024-10-281-1/+4
| | | | | | | | | | | | | | | | | | | git-gpull's help text suggests that unrecognized arguments are passed to git-pull: Usage: git gpull [<git-pull options>] Before this patch, that wasn't the case. Unrecognized arguments yielded an error. Now, we pass all arguments after the first encountered -- to git-pull. This is useful for running git-gpull in a dirty repository with git-pull's --autostash argument. Change-Id: Ia3b6f53e39aea4ba5fb6a1c2ba965ed73c737430 Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Edward Welbourne <[email protected]>
* sanitize-commit: Fix warning from module importMoss Heim2024-09-161-1/+1
| | | | | | | | | | | | | 'Attempt to call undefined import method with arguments ("path") via package "File::Spec" (Perhaps you forgot to load the package?) at .../qtrepotools/git-hooks/sanitize-commit line 15.' It seems to come from File::Spec's API being intended as class methods, so the whole module should be use'd. Change-Id: Id279fae213e6ce11277067d8266e550740a63103 Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* qt5_tool: Fix errors about uninitialized variablesFriedemann Kleint2024-08-141-2/+2
| | | | | Change-Id: I8634da95d27530b806030c1126004741d458ef05 Reviewed-by: Joerg Bornemann <[email protected]>
* Move Qt Submodule Update Bot to its own repositoryDaniel Smith2024-07-2618-3048/+0
| | | | | | | | | The bot now lives at qtbots/qtsubmoduleupdatebot Task-number: QTQAINFRA-6469 Change-Id: Ic6b25311f838cfe0235f91bb18d7041598801a59 Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Daniel Smith <[email protected]>
* gpick: fix --all with entirely unpushed seriesOswald Buddenhagen2024-07-051-2/+4
| | | | | | | | | | | | when a series was never pushed, complete_remote_series() will return no Changes for it. due to a missing check in changify_remote_specs(), this would lead to an out-of-bounds access. amends 2ce3a058. Fixes: QTQAINFRA-6416 Change-Id: I21f63531f574711522c19b80a0baa0902aca9114 Reviewed-by: Tor Arne Vestbø <[email protected]>
* qt6_tool: Error out on duplicate entries in module listFriedemann Kleint2024-07-031-0/+5
| | | | | Change-Id: Ie32302c8699dae67a6635a1bba52b6cf53ab2a5c Reviewed-by: Adrian Herrmann <[email protected]>
* qt6_tool: Fix flake8 warningsFriedemann Kleint2024-07-031-7/+7
| | | | | Change-Id: I5f9e4a0acff683ebcdbd295e0c914039b3391ac6 Reviewed-by: Adrian Herrmann <[email protected]>
* gpush/gpick: handle Changes w/o target branch on disappeared branchesOswald Buddenhagen2024-06-241-1/+2
| | | | | | | | | | | | | in source_map_traverse(), we try to find Changes in the upstream of their target branch, in case they were already integrated. but Changes that were never pushed (and weren't --group'd with --branch) don't have a target branch, so we'd get complaints about indexing by undef. we should just filter them out, as they don't have a base commit, either, and will therefore be skipped by the subsequent loop we're collecting the data for, too. Change-Id: Ic8fea075ff0b8cb6cb44db3353a9cdb4d52e276b Reviewed-by: Alexandru Croitor <[email protected]>
* gpick: fix incorrect hash deref in complete_spec_heads()Oswald Buddenhagen2024-06-241-1/+1
| | | | | | | | | %change_by_key is a hash, not a ref to a hash. drop excess $. Fixes: QTQAINFRA-6413 Change-Id: I765aee70e10fd933b23cefd87fb9acb28e04d7aa Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Mårten Nordheim <[email protected]>
* Prepare Sanity Bot for Reopens footerDaniel Smith2024-06-191-1/+8
| | | | | | | Task-number: QTQAINFRA-6248 Change-Id: I3ecb5247349c73a6f2f0e7ccff583f0a6fb4404e Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Daniel Smith <[email protected]>
* Remove capitalization check for Fixes footerDaniel Smith2024-06-181-3/+2
| | | | | | | | | The Fixes footer is unlikely to be capitalized incorrectly, so the capitalization check and complaint is unnecessary. Change-Id: Id7872c5f2ff8be31a1f3cbabae766a8d8b36c941 Reviewed-by: Edward Welbourne <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* Improve specificity of sanity-bot complaints for 3rd party ChangeLogDaniel Smith2024-03-251-3/+10
| | | | | | | | | | | Verify that the form of [Third-Party Code] is correct in the ChangeLog. amends d18cc13199ecb8ad833f759006fdf68b7703878c. Task-number: QTQAINFRA-6097 Change-Id: If4f75a0beb0e19bc5441043fad95c536153dece2 Reviewed-by: Daniel Smith <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* Set the target branch on missing yocto dependenciesDaniel Smith2024-03-201-0/+2
| | | | | | | | | | The yocto supermodule update may contain some repos that are not part of the common update round. If this is the case, then we need to make sure the target branch is set on the repo following the discovery process. Otherwise, the default dev or master branch will be chosen. Change-Id: Id5d5acbab16cccf5fcbba7a8f5d925979da34a8d Reviewed-by: Daniel Smith <[email protected]>
* Add a machine-readable state printer for bot monitoringDaniel Smith2024-03-209-48/+105
| | | | | | | | | | | | This enables the bot to be monitored by a monitoring system, providing the full state of the bot in a machine-readable format. This patch also contains a number of previously in-production hotfixes. Task-number: QTQAINFRA-5489 Change-Id: I7647935d79c1f7d184f60bfac1bba1e0ab2526b7 Reviewed-by: Daniel Smith <[email protected]>
* Complain if qt_attribution.json is modified without changelog entryDaniel Smith2024-03-201-0/+15
| | | | | | | | | | If the qt_attribution.json file is modified without a corresponding [ChangeLog][Third-Party Code] entry in the commit message, or vise versa, give a -1 sanity vote. Task-number: QTQAINFRA-6097 Change-Id: I959e0a0678faaae2578911c1d4ee3dd5d3ca61d8 Reviewed-by: Kai Köhne <[email protected]>
* Ignore branch validity for LTS release branch targets in public reposDaniel Smith2024-03-181-5/+11
| | | | | | | | | | | | | | | Since LTS release branches may not exist in the public repo, sanitize-commit cannot validate Pick-to: targets for them when evaluating public commits. This change bypasses the branch validation check for release targets to known LTS branches. In the event that the target branch is not a valid branch in the end, the cherry-pick bot will simply fail to perform the requested pick and post an error message to the change, alerting the author. Fixes: QTQAINFRA-6191 Change-Id: Id87b9e6fd379ad741801f339d42c13dca1f51123 Reviewed-by: Edward Welbourne <[email protected]>
* Perform generated file checks on a wider set of file typesDaniel Smith2024-01-291-10/+15
| | | | | | | | | | | | | | Fixup for 62c866e68f82d0c940c7c4ee5faff3e517b82ecd. Simply adding the newly generated keywords did not suffice for detecting headers generated by Sol, as they use the .hpp extension. This caused them to fall under a condition that didn't set the $check_gen flag. This issue could also affect other file types, so a more generic check is necessary. Change-Id: I3422d14f1cf35c512c48d7e12e8c5dbfaf1d6026 Reviewed-by: Oswald Buddenhagen <[email protected]> Reviewed-by: Daniel Smith <[email protected]>
* Update generated file detection for SolDaniel Smith2024-01-161-1/+1
| | | | | | | | | Expand the generated file regex to allow for "This file was generated with a script." Change-Id: Iaa896d0718afca87cccd7f07a94e7a79f25d9bb4 Reviewed-by: Daniel Smith <[email protected]> Reviewed-by: Oswald Buddenhagen <[email protected]>
* gpush: add support for specifying multiple push sourcesOswald Buddenhagen2024-01-091-32/+59
| | | | | | | | | so far i assumed that --all would be enough, but now that i'm submitting kernel patches in batches to avoid utterly flooding the list, being able to explicitly specify multiple series seems quite useful. Change-Id: I119745f95b079de6d1cbfed84184641ffcbc29c2 Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush: make chaining series comfortableOswald Buddenhagen2024-01-092-50/+325
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | this is for series that have local dependencies, but are nonetheless logically separate. a base that refers to a local Change will now get translated to that Change's latest PatchSet at the time the push happens, regardless of whether it was actually specified as that PatchSet's sha1, the Change-Id, or the current sha1 of the local commit. i can't think of a reason why that would be undesirable, so there is no opt-out from that. we don't auto-rebase when the parent is re-pushed, to minimize churn. instead, the new option --rebase-chained needs to be used for that. this is in the spirit of --minimal (it may make sense to link the behavior to that option, but things get a bit messy then). we don't automatically push the parent series, either. but if we did, in combination with auto-rebasing, this would effectively create atomic series whose parts can have different attributes, for example different reviewers (but note that we currently don't persist these locally anyway). however, such auto-chaining would be rather tricky in conjunction with --minimal when a series has multiple children. and realistically, push --all mode should be adequate in practice. Change-Id: I7a9608c99091a8a373c36af8ba95559234a5857c Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush: delay (re-)setting the push base to the local branch's baseOswald Buddenhagen2024-01-091-1/+10
| | | | | | | | | | | | | | when the series isn't pushed right away, but only (re-)grouped, then it is more intuitive to postpone resetting the base until the actual push, lest one will have to rebase again (when the local series receives another conflicted rebase in between). the wording of the help text is intentionally very broad, as it will soon cover more cases. Change-Id: I3ca99bc5d011b546e9f014c176c3c1bbc0f7a8e7 Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush/gpick: try to preserve group idsOswald Buddenhagen2024-01-092-5/+37
| | | | | | | | | | | | | | | | a subsequent commit will require the gids to stay stable. it also improves the optics, making debugging somewhat easier: git diff refs/gpush/state@{1}..refs/gpush/state now returns something that actually looks sane in most cases. if we actually versioned the state file, this would also save space, but as there is no need for versioning beyond what the reflog provides, this is kinda moot. Change-Id: If222c4763527bcfe3629bc181339176de095db39 Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush/gpick: enable specifying 'all' with --move/--copy/--hideOswald Buddenhagen2024-01-092-15/+40
| | | | | Change-Id: Id6c00ac74b8892f498e70a23e65a143ca79753c7 Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush/gpick: compress output from local branch trackingOswald Buddenhagen2024-01-091-38/+70
| | | | | | | | | | | | | | it is rather common that many Changes are affected by the same event/ error, so reporting them individually would lead to quite noisy output. so instead collect them in hashes indexed by the event, and output them only at the end. "regular" error reports are now also delayed, so notices are always printed prior to error messages, so the actionable items are most likely to remain in view. Change-Id: I2c130fe3f5053283e9ee4bfb66d67bbb5beb2716 Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush: remove support for legacy from:to syntaxOswald Buddenhagen2024-01-091-13/+0
| | | | | | | | commit 14431b408 introduced the new syntax and warnings about use of the legacy syntax six years ago, which really should be enough. Change-Id: Ieeedb8fe85a79a108e654c9ba9f7464789735b61 Reviewed-by: Alexandru Croitor <[email protected]>
* gpush: don't reject a plain tip revspec with --allOswald Buddenhagen2024-01-091-2/+0
| | | | | | | | | | this is documented to work, and is actually useful. code which correctly rejects the specification of ranges is already present further down. amends b36c69ea. Change-Id: I6ab153f2ccc601a6317a5cb96999e4f987e55562 Reviewed-by: Alexandru Croitor <[email protected]>
* gpush: introduce option to add missing Change-Id footersOswald Buddenhagen2024-01-092-12/+129
| | | | | | | | | | it's not exactly rare to try to push something to Gerrit, only to discover that the commit-msg hook wasn't installed. of course one can fix that and then simply run 'git rebase -i' and 'reword' each commit, but that gets a bit tedious with a lot of Changes ... Change-Id: I5a47f615452cc929dacbe621cc3116d2d8cc7b2d Reviewed-by: Alexandru Croitor <[email protected]>
* gpush/gpick: split analyze_local_branch()Oswald Buddenhagen2024-01-093-11/+20
| | | | | | | | | | this is preparatory refactoring, but it has an immediate side effect on gpick: we now process the branch tracking options (--move & co.) even if there are no local Changes, so we can print error messages about their over-use. Change-Id: If1bb8a3734234d90d5121a3286a9c94e4b96b86e Reviewed-by: Alexandru Croitor <[email protected]>
* gpush/gpick: reshuffle sanity check in analyze_local_branch() somewhatOswald Buddenhagen2024-01-091-18/+19
| | | | | | | | | | | run it on the re-enumerated commits rather than the raw ones. most visibly, this saves one loop. it also has the effect of checking only along the 1st parents, which is consistent with the overall operation of the scripts. another effect will manifest only after a subsequent patch: no double-examination of some commits. Change-Id: I60b612a52b9e86470f7b75241e45dae4e8637e77 Reviewed-by: Tor Arne Vestbø <[email protected]>
* gpush/gpick: resolve branch names internallyOswald Buddenhagen2024-01-091-1/+3
| | | | | | | | | | | | we have the local refs loaded up, so we can resolve them in-process, just like we already did with HEAD. this is an optimization, but the real intent is a prospective bug fix (if we manipulated the refs only in memory (due to --dry-run) prior to using them). consequently, we don't do ancestry traversal (e.g., HEAD~3) in-process (yet). Change-Id: I1930c61c986d846b37f02ca00aaa5a6c6a5d9bac Reviewed-by: Alexandru Croitor <[email protected]>
* gpush: revamp initialize_get_changes()Oswald Buddenhagen2024-01-092-104/+61
| | | | | | | | | | | | try to extract the branch from the $from revspec prior to trying to resolve it. this has roughly the same cost in case of expected failure (that is, when the revspec uses a Change-Id), but it is a lot cleaner, as we need only a little more code in determine_local_branch() (and by extension branch_for_commit()), while parse_local_rev_id() disappears, which enables a massive consolidation of parse_local_rev(). Change-Id: If864848c302809e3ba444be9f4ac2a4133e26111 Reviewed-by: Alexandru Croitor <[email protected]>
* gpush: pull ahead the normalization of rev-specs with omitted HEADOswald Buddenhagen2024-01-091-2/+2
| | | | | | | | | | ... like "~4", or even "". this kinda falsifies possible error messages, but arguably it's better to report what we thought the user wants, rather than just echoing the input - and parse_local_rev() already does it that way, too. Change-Id: I6b0d3b3977833818cf81a6a9d9e44b1dfb168334 Reviewed-by: Alexandru Croitor <[email protected]>
* gpush/gpick: revamp querying value of HEADOswald Buddenhagen2024-01-093-50/+60
| | | | | | | | | | | | | | don't invoke git symbolic-ref on-demand, but just load it up in-process in load_state(), which is a lot cheaper. in conjunction with the local branch heads which we already loaded up, we can simplify quite some code at no runtime cost. this also fixes the corner case of _parse_local_rev_sym() returning the tip of the wrong branch for a plain HEAD revspec when the $from revspec refers to another branch than HEAD does. Change-Id: Iffcb153f5888293c7df7a62dc692bb6196b18c93 Reviewed-by: Alexandru Croitor <[email protected]>
* gpush: don't let rebasing detached HEAD confuse our branch guessingOswald Buddenhagen2024-01-091-0/+1
| | | | | Change-Id: Ib3b9d306c811a3ddafd45f2c97d7d2237aa93907 Reviewed-by: Alexandru Croitor <[email protected]>