Version 0.13.0 * The SPDX License Expression in now the default scheme in the bdep-new --type|-t,license sub-option. Auto-detected licenses now also result in the SPDX License ID in the 'license' package manifest value. * New source layout customization mechanisms in bdep-new. In particular, the split include/src layout is now supported out of the box: $ bdep new -l c++ -t lib,split libhello See the SOURCE LAYOUT section in bdep-new(1) for details and a large number of examples. * The bdep-new command in the --package mode now creates the "glue buildfile" for the project. * The bdep-new command now generates the .gitattributes file with sensible defaults. * The bdep-new --subdirectory mode option has been renamed to --source. The corresponding options file has been renamed to bdep-new-source.options. * The bdep-new binless sub-option has been moved from --lang|-l to --type|t. Version 0.12.0 * Support for creating new projects with existing files. The bdep-new command now also recognizes and handles the following existing filesystem entries in the project root: .git -- assume VCS is already initialized and is Git LICENSE -- try to guess the manifest license from contents README.md -- try to extract the manifest summary line from contents Overall, the idea is to streamline the workflow where one creates a project on one of the hosting services (GitHub, GitLab, etc) and then initializes it with bdep-new. Also, to this effect, specifying the project name is now optional and if omitted, the current working directory (or --output-dir, if specified) is assumed to be the project name. An example of this streamlined workflow: $ # create project with LICENSE and README.md on a Git hosting service $ git clone .../libhello.git $ cd libhello $ bdep new -t lib Finally, with this change it now makes sense to have support for pre- creation hooks (--pre-hook) in addition to post-creation (--post-hook). * Support for default options files (aka tool config files). See the bdep-default-options-files(1) help topic for background and the DEFAULT OPTIONS FILES section in each command's man pages for specifics. * New bdep-new no-install project type sub-option. In particular, this should be useful when creating *-tests packages. * The C library projects created by bdep-new are now portable. Specifically, the use of fmemopen() was replaced with tmpfile(). * The pre and post-creation hooks now make use of portable builtins. To instead use a system-provided program, prefix the name with `^`, for example: $ bdep new --post-hook "^cat --squeeze-blank .../.gitignore >>.gitignore" See bdep-new(1) for details. * Ability to specify in the bdep-init command's -A and -C forms. * Ability to keep/update/remove the current tag in the bdep-release command's revision mode. Note also that previously the default was to update while now it is to keep. * Ability to have multiple forwarded configurations. The new constraint is that such configurations should not have any common packages (a package's source directory cannot be forwarded to multiple configurations). * New bdep-submit --forward option. This option instructs bdep-submit to use each package's forwarded configuration in order to prepare the distributions. This helps with setups where there is no single configuration that has all the packages (such as a build system module project). * New bdep-init --no-sync option. This allows postponing initialization in the build configurations to a later explicit bdep-sync. One subtle difference with such an explicit sync is that it will be performed without having the project's database open, which can be important if the initialization triggers an implicit sync (via a hook) of a project that uses the same database (as is the case with build system module projects). Version 0.11.0 * The bdep-new command now by default adds a README.md template. This can be suppressed with the new no-readme project type sub-option. For example: $ bdep new -t exe,no-readme hello * New license= bdep-new project type sub-option allows specifying a project license. For example: $ bdep new -t exe,license=MIT hello Commonly used license names are 'MIT', 'ASLv2' (Apache License 2.0), 'GPLv3', and 'proprietary' (see the 'license' package manifest value documentation for a more extensive list of names). Note that if the license is not specified, the default is now 'proprietary' instead of 'TODO'. * New bdep-new --post-hook option allows the execution of customization commands in the newly created project. For example: $ bdep new --post-hook "echo .idea/ >>.gitignore" hello See the bdep-new(1) man pages for details. * The bdep-ci command now allows overriding certain manifest values in packages being submitted for testing. This is primarily useful for specifying alternative build configurations and/or build notification emails. For example: $ bdep ci --builds gcc See the bdep-ci(1) man pages for details. * New bdep-release --amend and --squash options allow releasing a revision by squashing and amending one or more existing commits. * New --existing|-e option for bdep-{init,new} --config-create|-C and bdep-config create modes. With this option bdep initializes a bpkg configuration based on an existing build system configuration instead of creating a new one from scratch. For example: $ b create: build-clang/,cc config.cxx=clang++ $ bdep new -C build-clang --existing hello Version 0.10.0 * New bdep-new --subdirectory mode. This mode can be used to create a new source subdirectory in an already existing project. * Support for more granular C++ source file extension specification in bdep-new. For example: $ bdep new -t lib -l c++,hxx=h,cxx=cpp libhello # .h & .cpp $ bdep new -t lib -l c++,extension=?++ libhello # .h++, .c++, etc See the bdep-new(1) man pages for details. * Support for suppressing the generation of the library version header. Specifically, the bdep-new --type|-t=lib option now has the new no-version sub-option. * Support for the alternative build file/directory naming scheme. Specifically, the bdep-new --type|-t option now has the new alt-naming sub-option that can be used to create projects with the alternative naming. * New bdep-release --[no]-edit options. Now in all the bdep-release modes that perform a commit, if the project's repository index already contains other changes, then the commit message is automatically opened for editing unless --no-edit is specified. The editing of the commit message in the absence of other changes can be requested with the --edit option. Version 0.9.0 * New bdep-release command for managing a project's version during release. This command can be used to automatically change the project's version from snapshot to release (or the other way around), commit this change, tag this commit, and push everything to the remote. See the "Versioning and Release Management" in The build2 Toolchain Introduction for usage examples as well as the bdep-release(1) man pages for details. * New 'binless' option for the bdep-new 'c++' language parameter. This option allows creation of a simpler buildfile for header-only (and, in the future, for module-only) libraries. For example: $ bdep new -l c++,binless ... * New --jobs|-j option for specifying the number of jobs to perform in parallel. * CI requests from the staged toolchain are now by default sent to ci.stage.build2.org. * New --no-progress option for suppressing progress indicators. Version 0.8.0 * New bdep-ci command for submitting package test requests to CI servers. See the bdep-ci(1) man pages for details. * New bdep-publish command for publishing packages to archive-based repositories. See the bdep-publish(1) man pages for details. * New unit-tests project type option for the bdep-new command. If specified (-t exe,unit-tests or -t lib,unit-tests) then generate build infrastructure for unit testing. * Ability to suppress auto-synchronization via the BDEP_SYNC environment variable. If BDEP_SYNC is set, auto-synchronization will only be performed if its value is true or 1. So to suppress, run: $ BDEP_SYNC=0 b Version 0.7.0 * First public release.