From f11c1666a542a4f0c6cb63c17126c80b20e3111a Mon Sep 17 00:00:00 2001
From: Samuel Ampofo <134513506+samikampofojnr@users.noreply.github.com>
Date: Thu, 15 Jun 2023 19:49:05 +0300
Subject: [PATCH] Add files via upload
---
README (1).md | 61 +++++++++
README.md | 9 ++
...b92f8232333498cc45df4668e9f1409cf35cf5.rev | Bin 0 -> 14508 bytes
update.sample | 128 ++++++++++++++++++
4 files changed, 198 insertions(+)
create mode 100644 README (1).md
create mode 100644 README.md
create mode 100644 pack-e0b92f8232333498cc45df4668e9f1409cf35cf5.rev
create mode 100644 update.sample
diff --git a/README (1).md b/README (1).md
new file mode 100644
index 0000000..3e27da9
--- /dev/null
+++ b/README (1).md
@@ -0,0 +1,61 @@
+# Free Book "Programming Basics with Python"
+
+The free book "**Programming Basics with Python**" introduces the readers to writing **programming code** at a beginner level (variables and data, conditional statements, loops, and functions) using the **Python** programming language.
+
+
+
+* [Preface](chapter-00-preface.md)
+* [1. First Steps in Programming](chapter-01-first-steps-in-programming.md)
+* [2.1. Simple Calculations](chapter-02-simple-calculations.md)
+* [2.2. Simple Calculations – Exam Problems](chapter-02-simple-calculations-exam-problems.md)
+* [3.1. Simple Conditions](chapter-03-simple-conditions.md)
+* [3.2. Simple Conditions – Exam Problems](chapter-03-simple-conditions-exam-problems.md)
+* [4.1. More Complex Conditions](chapter-04-complex-conditions.md)
+* [4.2. More Complex Conditions – Exam Problems](chapter-04-complex-conditions-exam-problems.md)
+* [5.1. Loops](chapter-05-loops.md)
+* [5.2. Loops – Exam Problems](chapter-05-loops-exam-problems.md)
+* [6.1. Nested Loops](chapter-06-nested-loops.md)
+* [6.2. Nested Loops – Exam Problems](chapter-06-nested-loops-exam-problems.md)
+* [7.1. More Complex Loops](chapter-07-complex-loops.md)
+* [7.2. More Complex Loops – Exam Problems](chapter-07-complex-loops-exam-problems.md)
+* [8.1. Practical Exam Preparation – Part I](chapter-08-exam-preparation.md)
+* [8.2. Practical Exam Preparation – Part II](chapter-08-exam-preparation-part-2.md)
+* [9.1. Problems for Champions – Part I](chapter-09-problems-for-champions.md)
+* [9.2. Problems for Champions – Part II](chapter-09-problems-for-champions-part-2.md)
+* [10. Methods](chapter-10-functions.md)
+* [11. Tricks and Hacks](chapter-11-tricks-and-hacks.md)
+* [Conclusion](chapter-12-conclusion.md)
+
+## Download The Book
+
+Download the book "**Programming Basics with Python**" in **PDF** format:
+* TODO
+
+## Book Editions
+
+This book is available in several versions in different programming languages:
+* [Programming Basics with C# (English)](https://csharp-book.softuni.org)
+* [Programming Basics with Java (English)](https://java-book.softuni.org)
+* [Programming Basics with JavaScript (English)](https://js-book.softuni.org)
+* [Programming Basics with Python (English)](https://python-book.softuni.org)
+* [Programming Basics with C# (Bulgarian)](https://csharp-book.softuni.bg)
+* [Programming Basics with Java (Bulgarian)](https://java-book.softuni.bg)
+* [Programming Basics with JavaScript (Bulgarian)](https://js-book.softuni.bg)
+* [Programming Basics with Python (Bulgarian)](https://python-book.softuni.bg)
+* [Programming Basics with C++ (Bulgarian)](https://cpp-book.softuni.bg)
+
+## Book Details
+
+Brief information about this edition:
+* Title: **Programming Basics with Python**
+* Authors: **Svetlin Nakov & Team**
+ * Main authors: Boncho Vulkov, Hristo Minkov, Iliya Iliev, Martin Tsarev, Miglen Evlogiev, Milena Angelova, Mirela Damyanova, Nikolay Kostov, Petar Ivanov, Petya Gospodinova, Svetlin Nakov, Tanya Evtimova, Tanya Staneva, Teodor Kurtev, Ventsislav Petrov, Vladimir Damyanovski, Yordan Darakchiev
+ * Other contributors: Aleksander Krastev, Aleksander Lazarov, Aleksander Peev, Aleksandra Stoycheva, Angel Dimitriev, Ariet Motzeva, Daniel Tsvetkov, Denis Milanov, Dimitar Dzhapunov, Dimitar Tatarski, Dimo Dimov, Diyan Tonchev, Dzhaner Hasan, Elena Rogleva, Hristiyan Hristov, Hristo Hristov, Iskra Nikolova, Ivelin Kirilov, Jordan Liubenov, Julieta Atanasova, Kalin Primov, Kaloyan Nenchev, Kristiyan Pamidov, Luboslav Lubenov, Martin Zhelev, Mihail Georgiev, Natali Dimitrova, Nikola Slavchev, Nikolay Bankin, Nikolay Dimov, Pavlin Petkov, Petar Ivanov, Preslav Mihaylov, Rositsa Nenova, Ruslan Filipov, Simeon Stavrev, Stefka Vasileva, Svetlin Nakov, Teodor Kurtev, Tonyo Zhelev, Tsvetan Iliev, Vasko Viktorov, Venelin Bekyarov, Ventsislav Petrov, Yanitsa Vuleva, Yulian Linev, Zahariya Pehlivanova, Zhivko Nedyalkov
+* ISBN: **978-619-00-1403-4** (9786190014034)
+* Edition: **Faber Publishing, Sofia, Dec 2021** (expected)
+* License: **CC-BY-SA**
+* Source code: https://github.com/SoftUni/Programming-Basics-Book-Python-EN
+
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8bed460
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+# Demo Repository
+
+## Subtitle
+
+This is the demo repository for Software Technologies May 2023 Course @ SoftUni
+
+1. first
+1. second
+1. third
diff --git a/pack-e0b92f8232333498cc45df4668e9f1409cf35cf5.rev b/pack-e0b92f8232333498cc45df4668e9f1409cf35cf5.rev
new file mode 100644
index 0000000000000000000000000000000000000000..00a2bd16dbafe2c4e0ce08ff76d17bed043366c5
GIT binary patch
literal 14508
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
literal 0
HcmV?d00001
diff --git a/update.sample b/update.sample
new file mode 100644
index 0000000..c4d426b
--- /dev/null
+++ b/update.sample
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# An example hook script to block unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+# This boolean sets whether unannotated tags will be allowed into the
+# repository. By default they won't be.
+# hooks.allowdeletetag
+# This boolean sets whether deleting tags will be allowed in the
+# repository. By default they won't be.
+# hooks.allowmodifytag
+# This boolean sets whether a tag may be modified after creation. By default
+# it won't be.
+# hooks.allowdeletebranch
+# This boolean sets whether deleting branches will be allowed in the
+# repository. By default they won't be.
+# hooks.denycreatebranch
+# This boolean sets whether remotely creating branches will be denied
+# in the repository. By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+ echo "Don't run this script from the command line." >&2
+ echo " (if you want, you could supply GIT_DIR then run" >&2
+ echo " $0 [ )" >&2
+ exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+ echo "usage: $0 ][ " >&2
+ exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --type=bool hooks.allowunannotated)
+allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
+allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
+allowmodifytag=$(git config --type=bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+ echo "*** Project description file hasn't been set" >&2
+ exit 1
+ ;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero=$(git hash-object --stdin &2
+ echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,delete)
+ # delete tag
+ if [ "$allowdeletetag" != "true" ]; then
+ echo "*** Deleting a tag is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/tags/*,tag)
+ # annotated tag
+ if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+ then
+ echo "*** Tag '$refname' already exists." >&2
+ echo "*** Modifying a tag is not allowed in this repository." >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,commit)
+ # branch
+ if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+ echo "*** Creating a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/heads/*,delete)
+ # delete branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ refs/remotes/*,commit)
+ # tracking branch
+ ;;
+ refs/remotes/*,delete)
+ # delete tracking branch
+ if [ "$allowdeletebranch" != "true" ]; then
+ echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+ exit 1
+ fi
+ ;;
+ *)
+ # Anything else (is there anything else?)
+ echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+ exit 1
+ ;;
+esac
+
+# --- Finished
+exit 0
]