Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8be31ce
Now it works
ArtyomLobanov Mar 23, 2017
50e3372
Annotations
ArtyomLobanov Mar 23, 2017
8328931
gradlew permissions
ArtyomLobanov Mar 23, 2017
f68cd29
JetBrains Annotations
ArtyomLobanov Mar 23, 2017
5e67e2d
Bug fixes & testing
ArtyomLobanov Mar 23, 2017
6dd012b
Minor changes
ArtyomLobanov Mar 23, 2017
457a662
Hello-function, error-messages improvement
ArtyomLobanov Mar 23, 2017
cfec2d4
Create README.md
ArtyomLobanov Mar 23, 2017
1d64c32
Rename README.md to README.txt
ArtyomLobanov Mar 23, 2017
21075ce
Comments improved
ArtyomLobanov Apr 9, 2017
1277332
Minor changes to simplify long lines
ArtyomLobanov Apr 9, 2017
e934335
Rewrite static methdos to non-static
ArtyomLobanov Apr 9, 2017
24e2e39
Minor bug fixed
ArtyomLobanov Apr 9, 2017
28e439a
Tests improved
ArtyomLobanov Apr 9, 2017
536072d
Small tests added
ArtyomLobanov Apr 9, 2017
13ec8bd
Rename method <<logs>> to <<history>>
ArtyomLobanov Apr 9, 2017
3015ea1
More tests for god of tests
ArtyomLobanov Apr 9, 2017
770a3ff
Update README.txt
ArtyomLobanov Apr 9, 2017
22cc6d5
Now jar should work
ArtyomLobanov Apr 9, 2017
73421aa
Merge branch 'task7' of https://github.com/ArtyomLobanov/java-spbau i…
ArtyomLobanov Apr 9, 2017
44d3ba2
New features added
ArtyomLobanov Apr 13, 2017
477613f
New tests
ArtyomLobanov Apr 13, 2017
0e3f435
Logging
ArtyomLobanov Apr 13, 2017
5620e5f
Update build.gradle
ArtyomLobanov Apr 13, 2017
1e66911
Mock-tests
ArtyomLobanov Apr 13, 2017
8c39c47
Remove useless files
ArtyomLobanov Apr 13, 2017
481dcae
Update README.txt
ArtyomLobanov Apr 13, 2017
50b5a6e
Add Jenkisfile
ArtyomLobanov Dec 29, 2017
aac60f4
Fix Jenkisfile
ArtyomLobanov Dec 29, 2017
5ec8b16
Fix Jenkisfile
ArtyomLobanov Dec 29, 2017
f65fcf7
Change Jenkinsfile
ArtyomLobanov Dec 29, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
language: java

jdk:
- oraclejdk8
10 changes: 10 additions & 0 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
pipeline {
agent any
stages {
stage('build') {
steps {
sh './gradlew build'
}
}
}
}
45 changes: 45 additions & 0 deletions README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
DataManager - класс-прослойка между логикой системы контроля версий и файловой системой. Умеет создавать всякие служебные папки, сохранять в них копии файлов, служебную информацию; очищать рабочую копию, откатываться к заданной версии.

LiteVCS - основной класс, с которым будет работать пользователь библиотеки. Описывает логику работы. Большинство методов реализуют какую-то конкретную команду из списка ниже. Активно взаимодействует с DataManager.

Algorithms - класс со статическими методами реализующими алгоритм поиска LCA с помощью двоичных подъёмов. Также может найти всех предков заданной версии. Активно взаимодействует с VersionNode, DataManager-ом и больше ни с чем.

ConsoleWorker - консольное приложение, которое парсит команду и вызывает метод LiteVCS с нужными аргументами.

Примитивные классы:
ContentDescriptor хранит мапу из относительных путей в id версий фйалов. По id ContentDescriptor-а можно днлать checkout. Также используется для хранения Stage - списка версий файлов, которые надо добавить к следующему коммиту.

Commit хранит имя автора коммита, время его создания, комментарий к коммиту и id ContentDescriptor-а который задаёт состояние файлов в репозитории.

VersionNode хранит id коммита, с которым она ассоциирована, а также таблицу предков и глубину в дереве версий, используемых алгоритмом двоичного подъёма. Отделён от Commit чтобы облегчить VersionNode, которые будут в большом количестве читаться в процессе поиска общего предка.

Branch хранит id VersionNode, которая считается полседней версией этой ветки. Также ветка имеет имя.

Header хранит имя последнего указанного автора (через hello) (это имя подставляется в создаваемые коммиты) и имя активной ветки.

Stage хранит информацию об изменениях, которые войдут в следующий коммит.




Список команд:
init - Инициализирует репозиторий в текущей папке
add [файл] - Сохраняет копию текущего состояния файла, чтобы добавить его к ближайшему коммиту
commit [сообщение] - Делает коммит в текущую ветку, тем самым подтверждая все изменения
checkout [id of content descriptor] - id можно узнать через logs или подсмотрев в папку .liteVCS/descriptors.
очищает рабочую папку, а затем подгружает прописанные в дескрипторе файлы.
clean - Очищает рабочую папку, удаляя всё, кроме папки .liteVCS и файлов, входивших в последний коммит или изменения которых уже добавлены в Stage
status - Показывает изменения, находящиеся в Stage, для каждого файла из рабочей папки сообщает статус (CHANGED - файл отличается от версии в последнем коммите и в Stage-е; NOT_CHANGED; UNKNOWN - не отслеживается репозиторием), а также перечисляет файлы, которые из папки пропали, но не были удалены через репозиторий.
create_branch [название] - Создёт новую ветку, ответвляющуюся от головы текущей ветки
remove_branch [название] - Удаляет ветку
switch_branch [название] - Переключается на другую ветку. Предварительно необходимо закоммитить все накопленные изменения.
merge_branch [название] [сообщение] - Если нет неразрешимых конфликтов (один и тот же файл изменили по разному в разных ветках), то
добавляет изменения из указанной ветки в текущую, создавая коммит с указанным сообщением.
reset [файл] - Откатывает состояние файла к последнему коммиту. Удаляет иформацию об изменении этого файла из Stage
uninstall - Удаляет репозиторий
logs [число] - Показывает последние [число] коммитов в текующей ветке
hello [имя] - Задаёт имя пользователя.
remove [файл] - Удаляет файл из рабочей папки, записывает в Stage информацию о том, что в следующем коммите надо этот файл перестать отслеживать



25 changes: 25 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
group 'my_projects'
version '1.0-SNAPSHOT'

apply plugin: 'java'

repositories {
mavenCentral()
}

jar {
from {configurations.compile.collect { it.isDirectory() ? it : zipTree(it)} }
manifest { attributes 'Main-Class': 'ru.spbau.lobanov.liteVCS.ConsoleWorker' }
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
// https://mvnrepository.com/artifact/com.google.guava/guava
compile group: 'com.google.guava', name: 'guava', version: '21.0'

compile group: 'org.jetbrains', name: 'annotations', version: '13.0'

// https://mvnrepository.com/artifact/org.mockito/mockito-all
compile group: 'org.mockito', name: 'mockito-all', version: '1.10.19'

}
Binary file added gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
6 changes: 6 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#Sun Mar 19 12:08:40 MSK 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.1-bin.zip
169 changes: 169 additions & 0 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

84 changes: 84 additions & 0 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
rootProject.name = 'my_svn'

Loading