Skip to content
Snippets Groups Projects
Commit bf97b494 authored by Allan Blanchard's avatar Allan Blanchard
Browse files

Merge branch 'fix/martin/doc/update-release-manual' into 'master'

Update release manual

See merge request frama-c/frama-c!4592
parents c42907be 5694700e
No related branches found
No related tags found
No related merge requests found
Version number Date of release Notes
============== =============== =====
29.0 (Copper) 2024, June 6
28.1 (Nickel) 2024, March 24 Bugs fixed
28.0 (Nickel) 2023, November 29
27.1 (Cobalt) 2023, July 18
27.0 (Cobalt) 2023, June 15
26.1 (Iron) 2023, February 15
26.0 (Iron) 2022, November 23
25.0 (Manganese) 2022, June 22
24.0 (Chromium) 2021, November 30
23.1 (Vanadium) 2021, July 20
23.0 (Vanadium) 2021, July 7
22.0 (Titanium) 2020, November 17
21.1 (Scandium) 2020, June 25 Bugs fixed
21.0 (Scandium) 2020, June 11
20.0 (Calcium) 2019, December 4
19.1 (Potassium) 2019, September 18 OCaml 4.08 compatibility
19.0 (Potassium) 2019, June 21
18.0 (Argon) 2018, November 29
Chlorine-20180502 2018, July 06 Bug fixed
Chlorine-20180501 2018, June 01
Sulfur-20171101 2017, November 28
Phosphorus-20170501 2017, May 29
Silicon-20161101 2016, December 2
Aluminium-20160502 2016, May 31
Aluminium-20160501 2016, May 30 Removed
Aluminium-rc1 2016, May 13 Not publicly released
Magnesium-20151002 2016, January 15
Magnesium-20151001 2015, October 27 Not publicly released
Sodium-20150201 2015, March 9
Neon-20140301 2014, May 7
Fluorine-20130601 2013, June 11 Bug fixed
Fluorine-20130501 2013, May 23 Bug fixed
Fluorine-20130401 2013, April 17
Oxygen-20120901 2012, September 19
Nitrogen-20111001 2011, October 10
Carbon-20110201 2011, February 7
Carbon-20101202-beta2 2010, December 17 Source only
Carbon-20101201-beta1 2010, December 14 Source only
Boron-20100401 2010, April 12
Beryllium-20090902 2009, September 23
Beryllium-20090901 2009, September 01
Beryllium-20090601-beta1 2009, June 23 Source only
Lithium-20081201 2008, Decembre 16
Lithium-20081002+beta1 2008, October 28
Lithium-20081001+alpha0 2008, October 03 Source only
Helium-20080701 2008, July 11
Hydrogen-20080502 2008, May 26 No cvs tag
Hydrogen-20080501 2008, May 05 Source only, No cvs tag
Hydrogen-20080302 2008, March 27 Binary only
Hydrogen-20080301 (Hydrogen) 2008, March 03 Source only
...@@ -87,6 +87,9 @@ else ...@@ -87,6 +87,9 @@ else
echo "$NEXT" >VERSION echo "$NEXT" >VERSION
echo "$NEXT_CODENAME" >VERSION_CODENAME echo "$NEXT_CODENAME" >VERSION_CODENAME
# Ivette
$SED -i "s/^ \"version\": .*/ \"version\": \"$CURRENT_MAJOR.$CURRENT_MINOR.0\",/g" ivette/package.json
# Opam files # Opam files
$SED -i "s/^version: .*/version: \"$NEXT\"/g" opam $SED -i "s/^version: .*/version: \"$NEXT\"/g" opam
$SED -i "s/\(.*\)$CURRENT_MAJOR.$CURRENT_MINOR-$CURRENT_CODENAME\(.*\)/\1$NEXT_MAJOR.$NEXT_MINOR-$NEXT_CODENAME\2/g" opam $SED -i "s/\(.*\)$CURRENT_MAJOR.$CURRENT_MINOR-$CURRENT_CODENAME\(.*\)/\1$NEXT_MAJOR.$NEXT_MINOR-$NEXT_CODENAME\2/g" opam
...@@ -124,6 +127,8 @@ else ...@@ -124,6 +127,8 @@ else
doc/aorai/main.tex doc/aorai/main.tex
$SED -i "s/\(^\\\\section\*{E-ACSL \\\\eacslpluginversion \\\\eacslplugincodename}\)/%\1\n\n\\\\section\*{E-ACSL $NEXT_MAJOR.$NEXT_MINOR $NEXT_CODENAME}/g" \ $SED -i "s/\(^\\\\section\*{E-ACSL \\\\eacslpluginversion \\\\eacslplugincodename}\)/%\1\n\n\\\\section\*{E-ACSL $NEXT_MAJOR.$NEXT_MINOR $NEXT_CODENAME}/g" \
src/plugins/e-acsl/doc/userman/changes.tex src/plugins/e-acsl/doc/userman/changes.tex
$SED -i "s/\(^\\\\subsection\*{Version Frama-C+dev}\)/%\1\n\n\\\\subsection\*{Version $NEXT_CODENAME-$NEXT_MAJOR}/g" \
src/plugins/e-acsl/doc/refman/changes_modern.tex
# Reference configuration # Reference configuration
$SED -i "s/Frama-C [1-9][0-9]\.[0-9]/Frama-C $NEXT_MAJOR.$NEXT_MINOR/gI" \ $SED -i "s/Frama-C [1-9][0-9]\.[0-9]/Frama-C $NEXT_MAJOR.$NEXT_MINOR/gI" \
......
...@@ -14,12 +14,11 @@ be integrated into the upcoming release. ...@@ -14,12 +14,11 @@ be integrated into the upcoming release.
When the ``freeze'' period arrives (usually a few weeks before the beta When the ``freeze'' period arrives (usually a few weeks before the beta
release), the release manager may decide to prevent direct merges to the release), the release manager may decide to prevent direct merges to the
\texttt{master} branch, until the \texttt{stable} branch is created. \texttt{master} branch, until the \texttt{stable} branch is created. If so, then
If so, then the branch should be protected such that Developers can no the branch should be protected such that Developers can no longer push and merge
longer push and merge to it, without asking for a Master to do it. to it, without asking for a Maintainer to do it. In Gitlab, this is done via:
Frama-C project $\rightarrow$ Settings $\rightarrow$ Repository $\rightarrow$
In Gitlab, this is done via: Frama-C project $\rightarrow$ Settings Protected Branches.\\
$\rightarrow$ Repository $\rightarrow$ Protected Branches.
\textbf{The \texttt{master} branch must be protected \emph{at all times}. \textbf{The \texttt{master} branch must be protected \emph{at all times}.
Parameters Parameters
...@@ -29,7 +28,7 @@ $\rightarrow$ Repository $\rightarrow$ Protected Branches. ...@@ -29,7 +28,7 @@ $\rightarrow$ Repository $\rightarrow$ Protected Branches.
\section{Creating the branch} \section{Creating the branch}
Note that you must be member of the GitLab groups "frama-c", "dev" and have \textbf{Note:} You must be member of the GitLab groups "frama-c", "dev" and have
access to each plugin of continuous integration. access to each plugin of continuous integration.
Create the branch \texttt{stable/release}, where \texttt{release} is the Create the branch \texttt{stable/release}, where \texttt{release} is the
...@@ -55,6 +54,9 @@ and go through Merge-requests. Everything else should go in \texttt{master}, ...@@ -55,6 +54,9 @@ and go through Merge-requests. Everything else should go in \texttt{master},
which can then be reset to standard-level protection (Developers + Maintainers which can then be reset to standard-level protection (Developers + Maintainers
allowed to push/merge). allowed to push/merge).
\textbf{Note:} If there are still merge requests tagged for this release, make
sure to set their targeted branch to \texttt{stable/release}.
\section{GitLab issues} \section{GitLab issues}
{\em This is currently done periodically in specific Frama-C meetings, so only {\em This is currently done periodically in specific Frama-C meetings, so only
...@@ -73,8 +75,11 @@ one. ...@@ -73,8 +75,11 @@ one.
On the new \texttt{stable} branch, execute the script: On the new \texttt{stable} branch, execute the script:
\begin{verbatim} \begin{verbatim}
./dev/set-version.sh NN.M # to be replaced with actual major/minor version # to be replaced with actual major/minor version
# Add suffix ~beta for beta releases only
./dev/set-version.sh NN.M
\end{verbatim} \end{verbatim}
This will: This will:
\begin{itemize} \begin{itemize}
\item update the \texttt{Changelog}s \item update the \texttt{Changelog}s
...@@ -86,6 +91,10 @@ This will: ...@@ -86,6 +91,10 @@ This will:
\item update the reference configuration \item update the reference configuration
\end{itemize} \end{itemize}
For beta releases, update manually the doc link in opam file to add
\texttt{-beta} (not \texttt{\textasciitilde{}beta}) :
\texttt{http://frama-c.com/download/user-manual-<NN.M>-beta-<Codename>.pdf}\\
Merge the \texttt{stable} branch in the \texttt{master} branch. Merge the \texttt{stable} branch in the \texttt{master} branch.
On the \texttt{master} branch, execute the script: On the \texttt{master} branch, execute the script:
...@@ -100,6 +109,28 @@ This will: ...@@ -100,6 +109,28 @@ This will:
Commit this change and push. Commit this change and push.
\section{External plugins}
List of external plugins repo names:
\begin{itemize}
\item ACSL-importer
\item Caveat-importer
\item Cfp
\item frama-clang
\item GenAssigns
\item Meta
\item Minimal
\item Mthread
\item PathCrawler
\item Security
\item Volatile
\end{itemize}
For each one of them, check that versions in the \texttt{dune-project} files are
coherent with \FramaC's new release. If not, update them and run \verb+make+ to
generate the new opam file. Create a new branch, commit and push. Create a merge
request targetting \texttt{stable/copper} on each plugin and assign your co-rm.
This changes will need to be merged on master's branches later.
\section{Copyright} \section{Copyright}
Check that the date in copyright headers is correct. If not then: Check that the date in copyright headers is correct. If not then:
...@@ -108,8 +139,6 @@ Check that the date in copyright headers is correct. If not then: ...@@ -108,8 +139,6 @@ Check that the date in copyright headers is correct. If not then:
\begin{itemize} \begin{itemize}
\item \texttt{headers/closed-source/*} \item \texttt{headers/closed-source/*}
\item \texttt{headers/open-source/*} \item \texttt{headers/open-source/*}
\item \texttt{ivette/headers/closed-source/*}
\item \texttt{ivette/headers/open-source/*}
\item \texttt{src/plugins/e-acsl/headers/closed-source/*} \item \texttt{src/plugins/e-acsl/headers/closed-source/*}
\item \texttt{src/plugins/e-acsl/headers/open-source/*} \item \texttt{src/plugins/e-acsl/headers/open-source/*}
\end{itemize} \end{itemize}
......
...@@ -32,6 +32,13 @@ following: ...@@ -32,6 +32,13 @@ following:
on \texttt{pub} (it must be started manually and requires the branch). on \texttt{pub} (it must be started manually and requires the branch).
\end{description} \end{description}
After running \texttt{release-branch} and \texttt{release-create}, either the
tag indicates a beta release and then this tag is pushed on the public GitLab
repository (\url{https://git.frama-c.com/pub/frama-c/-/tags}), or it is a final
release and the release should be available in
\url{https://git.frama-c.com/pub/frama-c/-/releases}, as well as the tag of the
version in \url{https://git.frama-c.com/pub/frama-c/-/tags}.
\section{Check the website} \section{Check the website}
Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com}. Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com}.
...@@ -48,41 +55,41 @@ Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com} ...@@ -48,41 +55,41 @@ Once the pipeline for the website has run, open \texttt{https://pub.frama-c.com}
\item check manual links (reminder: the links are dead at this moment), it must contain \texttt{NN.N-Version} \item check manual links (reminder: the links are dead at this moment), it must contain \texttt{NN.N-Version}
\item check ACSL version. \item check ACSL version.
\end{itemize} \end{itemize}
\item \texttt{/html/changelog.html\#Codename-NN.N} \item \texttt{/html/changelog.html\#<codename>-<NN.M>}
\item \texttt{/html/acsl.html}: check ACSL versions list \item \texttt{/html/acsl.html}: check ACSL versions list
\item \texttt{rss.xml}: check last event \item \texttt{rss.xml}: check last event
\end{itemize} \end{itemize}
For a beta version, the installation pages for: For a beta version, the installation pages for:
\begin{itemize} \begin{itemize}
\item \texttt{/html/installations/beta\_codename.html} should indicate the beta status \item \texttt{/html/installations/<beta\_codename>.html} should indicate the beta status
\item \texttt{/html/installations/current\_codename.html} should not indicate anything \item \texttt{/html/installations/<current\_codename>.html} should not indicate anything
\item \texttt{/html/installations/previous\_codename.html} should indicate older version \item \texttt{/html/installations/<previous\_codename>.html} should indicate older version
\end{itemize} \end{itemize}
For a final version, the installation pages for: For a final version, the installation pages for:
\begin{itemize} \begin{itemize}
\item \texttt{/html/installations/codename.html} should not indicate anything \item \texttt{/html/installations/<codename>.html} should not indicate anything
\item \texttt{/html/installations/previous\_codename.html} should indicate older version \item \texttt{/html/installations/<previous\_codename>.html} should indicate older version
\end{itemize} \end{itemize}
On GitLab, in the website repository, in the merge request assigned to you, the On GitLab, in the website repository, in the merge request assigned to you, the
following files must appear as \textbf{new} in \texttt{download}: following files must appear as \textbf{new} in \texttt{download}:
\begin{itemize} \begin{itemize}
\item \texttt{acsl-X.XX.pdf} \item \texttt{acsl-<X.YY>.pdf}
\item \texttt{acsl-implementation-NN.N-CODENAME.pdf} \item \texttt{acsl-implementation-<NN.M>-<Codename>.pdf}
\item \texttt{plugin-development-guide-NN.N-CODENAME.pdf} \item \texttt{plugin-development-guide-<NN.M>-<Codename>.pdf}
\item \texttt{user-manual-NN.N-CODENAME.pdf} \item \texttt{user-manual-<NN.M>-<Codename>.pdf}
\item \texttt{<plugin>-manual-NN.N-CODENAME.pdf}\\ \item \texttt{<plugin>-manual-<NN.M>-<Codename>.pdf}\\
for Aorai, EVA, Metrics, RTE and WP for Aorai, EVA, Metrics, RTE and WP
\item \texttt{e-acsl/e-acsl-X.XX.pdf} \item \texttt{e-acsl/e-acsl-<X.YY>.pdf}
\item \texttt{e-acsl/e-acsl-implementation-NN.N-CODENAME.pdf} \item \texttt{e-acsl/e-acsl-implementation-<NN.M>-<Codename>.pdf}
\item \texttt{e-acsl/e-acsl-manual-NN.N-CODENAME.pdf} \item \texttt{e-acsl/e-acsl-manual-<NN.M>-<Codename>.pdf}
\item \texttt{aorai-example-NN.N-CODENAME.tar.gz} \item \texttt{aorai-example-<NN.M>-<Codename>.tar.gz}
\item \texttt{frama-c-NN.N-CODENAME.tar.gz} \item \texttt{frama-c-<NN.M>-<Codename>.tar.gz}
\item \texttt{frama-c-NN.N-CODENAME-api.tar.gz} \item \texttt{frama-c-<NN.M>-<Codename>-api.tar.gz}
\item \texttt{frama-c-server-NN.N-CODENAME-api.tar.gz} \item \texttt{frama-c-server-<NN.M>-<Codename>-api.tar.gz}
\item \texttt{hello-NN.N-CODENAME.tar.gz} \item \texttt{hello-<NN.M>-<Codename>.tar.gz}
\end{itemize} \end{itemize}
For a final release \textbf{ONLY}, the following files must appear as \textbf{modified} in \texttt{download}: For a final release \textbf{ONLY}, the following files must appear as \textbf{modified} in \texttt{download}:
...@@ -101,7 +108,7 @@ For a final release \textbf{ONLY}, the following files must appear as \textbf{mo ...@@ -101,7 +108,7 @@ For a final release \textbf{ONLY}, the following files must appear as \textbf{mo
\item \texttt{e-acsl/e-acsl-implementation.pdf} \item \texttt{e-acsl/e-acsl-implementation.pdf}
\item \texttt{e-acsl/e-acsl-manual.pdf} \item \texttt{e-acsl/e-acsl-manual.pdf}
\item \texttt{frama-c-aorai-example.tar.gz} \item \texttt{frama-c-aorai-example.tar.gz}
\item \texttt{hello.tar.gz} \item \texttt{frama-c-hello.tar.gz}
\end{itemize} \end{itemize}
If everything is fine, merge the website and ask a website maintainer to put it If everything is fine, merge the website and ask a website maintainer to put it
...@@ -114,16 +121,6 @@ links (files are available only once the website has been put online). If ...@@ -114,16 +121,6 @@ links (files are available only once the website has been put online). If
everything is fine, edit the main wiki page and the sidebar with a link to the everything is fine, edit the main wiki page and the sidebar with a link to the
page (\url{https://git.frama-c.com/pub/frama-c/-/wikis/home}). page (\url{https://git.frama-c.com/pub/frama-c/-/wikis/home}).
In the release pipeline, run the job \texttt{release - release-branch}. It will
push the stable branch on the public repository.
Then, run the job \texttt{release - release-create}. After this, either the
tag indicates a beta release and then this tag is pushed on the public GitLab
repository (\url{https://git.frama-c.com/pub/frama-c/-/tags}), or it is a final
release and the release should be available in
\url{https://git.frama-c.com/pub/frama-c/-/releases}, as well as the tag of the
version in \url{https://git.frama-c.com/pub/frama-c/-/tags}.
\section{Announcements} \section{Announcements}
\begin{itemize} \begin{itemize}
...@@ -155,6 +152,8 @@ Check if other \FramaC (and related) repositories need to be updated: ...@@ -155,6 +152,8 @@ Check if other \FramaC (and related) repositories need to be updated:
\section{Docker image preparation} \section{Docker image preparation}
This section only applies to non-beta releases.
\textbf{Note:} you need access to the \texttt{framac} Docker Hub account to be \textbf{Note:} you need access to the \texttt{framac} Docker Hub account to be
able to upload the image. able to upload the image.
......
...@@ -28,21 +28,21 @@ If you don't know them, ask plug-in developers to verify them. ...@@ -28,21 +28,21 @@ If you don't know them, ask plug-in developers to verify them.
\end{itemize} \end{itemize}
\section{Fix version} \section{Fix version}
\label{sec:validation:version}
The tasks listed in this section are performed by the Release Manager. The tasks listed in this section are performed by the Release Manager.
\subsection{Versions in documentation files} \subsection{Versions in documentation files}
Change version and codename in the following files: For final release only, remove \texttt{\textasciitilde{}beta} and
\texttt{-beta} mentions in the following files :
\begin{itemize} \begin{itemize}
\item \texttt{ALL\_VERSIONS} (non-beta only) \item \texttt{VERSION}
\item \texttt{VERSION} (for beta releases, add suffix \texttt{\textasciitilde{}beta}, not \texttt{-beta})
\item \texttt{opam} \item \texttt{opam}
\begin{itemize} \begin{itemize}
\item change version (for beta releases, add suffix \texttt{\textasciitilde{}beta}, not \texttt{-beta}) \item in version field
\item change doc link: \texttt{…/download/user-manual-<version>-<codename>.pdf} \item in the doc link
(with \texttt{-beta} in version for beta releases, not \texttt{\textasciitilde{}beta}) \end{itemize}
\end{itemize}
\end{itemize} \end{itemize}
\subsection{Versions in source: API documentation} \subsection{Versions in source: API documentation}
...@@ -99,7 +99,9 @@ git ls-files -z | \ ...@@ -99,7 +99,9 @@ git ls-files -z | \
parallel -0 -n1 git blame --line-porcelain | \ parallel -0 -n1 git blame --line-porcelain | \
sed -n 's/^author //p' | sort -f | uniq -ic | sort -nr sed -n 's/^author //p' | sort -f | uniq -ic | sort -nr
\end{verbatim} \end{verbatim}
(source for the command: \url{https://gist.github.com/amitchhajer/4461043})
\textbf{Note:} This requires to install the package \texttt{parallel}. Source
for the command: \url{https://gist.github.com/amitchhajer/4461043}.
\subsection{Commit} \subsection{Commit}
...@@ -110,7 +112,7 @@ Commit any change that you have done during these checks \textbf{and push}. ...@@ -110,7 +112,7 @@ Commit any change that you have done during these checks \textbf{and push}.
In the last continuous integration pipeline of the release branch, force the In the last continuous integration pipeline of the release branch, force the
run of the following targets: run of the following targets:
\begin{itemize} \begin{itemize}
\item manuals \item manuals-artifacts
\item opam-pin \item opam-pin
\item opam-pin-minimal \item opam-pin-minimal
\end{itemize} \end{itemize}
...@@ -121,7 +123,7 @@ They shall succeed. Collect the artifacts of the following targets: ...@@ -121,7 +123,7 @@ They shall succeed. Collect the artifacts of the following targets:
\item manuals \item manuals
\end{itemize} \end{itemize}
Check that these artifacts are as expected. In particular: \noindent Check that these artifacts are as expected. In particular:
\begin{itemize} \begin{itemize}
\item API documentatation: \item API documentatation:
\begin{itemize} \begin{itemize}
...@@ -132,7 +134,9 @@ Check that these artifacts are as expected. In particular: ...@@ -132,7 +134,9 @@ Check that these artifacts are as expected. In particular:
\item Check versions in manuals \item Check versions in manuals
\item Tarball \item Tarball
\begin{itemize} \begin{itemize}
\item Check that no non-free components are distributed \item Check that no non-free components are distributed (note: unless
someone inadvertently added non-free code, \FramaC does not contain any,
this check is obsolete).
\item Check that no \texttt{/home/user} path can be found in the distribution, \item Check that no \texttt{/home/user} path can be found in the distribution,
\item Build and test \item Build and test
\begin{itemize} \begin{itemize}
...@@ -147,7 +151,7 @@ Check that these artifacts are as expected. In particular: ...@@ -147,7 +151,7 @@ Check that these artifacts are as expected. In particular:
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
Alternatively, you can use \texttt{docker} to compile the archive against a \noindent Alternatively, you can use \texttt{docker} to compile the archive against a
precise configuration: precise configuration:
\begin{itemize} \begin{itemize}
\item \verb+cp distributed/frama-c-<VERSION>.tar.gz developer_tools/docker+ \item \verb+cp distributed/frama-c-<VERSION>.tar.gz developer_tools/docker+
...@@ -156,11 +160,20 @@ precise configuration: ...@@ -156,11 +160,20 @@ precise configuration:
\item \verb+docker build . -t framac/frama-c:dev --target frama-c-gui-slim \+\\ \item \verb+docker build . -t framac/frama-c:dev --target frama-c-gui-slim \+\\
\verb+ -f Dockerfile.dev --build-arg=from_archive=frama-c-<VERSION>.tar.gz+ \verb+ -f Dockerfile.dev --build-arg=from_archive=frama-c-<VERSION>.tar.gz+
\end{itemize} \end{itemize}
For the GUI: in order to be able to launch For the GUI: in order to be able to launch \verb+x11docker framac/frama-c:dev frama-c-gui+,
\verb+x11docker framac/frama-c:dev frama-c-gui+,
you might want to install the you might want to install the
\href{https://github.com/mviereck/x11docker}{\texttt{x11docker}} script. \href{https://github.com/mviereck/x11docker}{\texttt{x11docker}} script.
\noindent \FramaC's GUI can be tested with :
\begin{itemize}
\item \texttt{bin/frama-c-gui} for the old GUI.
\item \texttt{bin/ivette} for the new GUI.
\end{itemize}
\Eva can be tested with \texttt{<gui> -eva tests/idtc/*.c} and \Wp with
\texttt{<gui> -wp -wp-rte src/plugins/wp/tests/wp\_gallery/find.i}. Try to
navigate in the code, check some values with \Eva, check that \Wp prove some
annotations, this should be enough.
\section{Validate release} \section{Validate release}
Create the main changes file in the directory \texttt{releases}. This file must Create the main changes file in the directory \texttt{releases}. This file must
...@@ -182,8 +195,12 @@ expected format is: ...@@ -182,8 +195,12 @@ expected format is:
# ... # ...
\end{lstlisting} \end{lstlisting}
It should only list main changes, that will be displayed on the event section It should only list main changes, that will be displayed on the event section of
of the website and the wiki page. the website and the wiki page.
\textbf{Note:} Make sure to use markdown code formating \verb+``+ if the texte
contains things that could be affected by markdown formatting (for example
\verb+\word1_word2+ will be displayed as \verb+word2+ without code formatting.
Create the version commit, tag it using \texttt{git tag \$(cat VERSION | sed -e "s/\textasciitilde /-/")} Create the version commit, tag it using \texttt{git tag \$(cat VERSION | sed -e "s/\textasciitilde /-/")}
and push it (e.g. via \texttt{git push origin \$(cat VERSION | sed -e "s/\textasciitilde/-/")}). and push it (e.g. via \texttt{git push origin \$(cat VERSION | sed -e "s/\textasciitilde/-/")}).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment