working on the commit system

This commit is contained in:
2020-09-08 20:44:02 -04:00
parent cb24c6f2c8
commit 951cda3b25
26 changed files with 378 additions and 31 deletions

View File

@@ -36,6 +36,7 @@ func (m *Manager) CreateInitialCommit(fileList []database.File, branch string, c
for _, file := range fileList {
filename, err := ConvertFileForStorage(&file, folder)
if err != nil {
fmt.Println("Failure converting file for storage! ", file)
// TODO: roll back commit on error (folders/files created need to be deleted)
return err
}
@@ -51,7 +52,7 @@ func (m *Manager) CreateInitialCommit(fileList []database.File, branch string, c
}
// CreateCommit creates a new commit by running diffs on files, compressing, etc, as needed
func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []database.File, branch string, commitMessage string, commitNumber int) error {
func (m *Manager) CreateCommit(changedFiles, trackedFiles, newFiles []database.File, branch string, commitMessage string, commitNumber int) error {
m.Info().Msgf("Starting commit number: %d on branch: %s", commitNumber, branch)
//Need to deduplicate so we aren't storing duplicates of files, storing all the files in one folder won't work, will need something like git
//For initial commit no changes are made to files, so don't store anything, just save the list so you can send to server
@@ -63,7 +64,7 @@ func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []data
}
currentTime := time.Now()
newCommit.CommitHash = hashBytes
newCommit.Number = 1
newCommit.Number = commitNumber
newCommit.TrackedFiles = trackedFiles
newCommit.Date = currentTime.String()
folder := m.FilePaths.ObjectFolder + string(filepath.Separator) + hex.EncodeToString(hashBytes)
@@ -71,13 +72,20 @@ func (m *Manager) CreateCommit(changedFiles []database.File, trackedFiles []data
if err != nil {
return fmt.Errorf("unable to create commit directory in object dir: %s err: %s", folder, err)
}
// TODO: Do a full file copy every 5 commits
m.Info().Msgf("Total number of files to commit: %d", len(trackedFiles))
fmt.Println("Total number of files to commit: ", len(trackedFiles))
// TODO: CHeck for NEW Files and convert to starage, not changed files
for _, file := range changedFiles {
m.Info().Msgf("Converting changed fi")
// Find NEW files that need to be converted for storage
var changedandNewFiles []database.File
changedandNewFiles = append(changedFiles, newFiles...)
for _, file := range changedandNewFiles {
m.Info().Msgf("Converting changed file: %s", file.Name)
filename, err := ConvertFileForStorage(&file, folder)
if err != nil {
fmt.Println("Error converting changed file! ", file.Name)
m.Info().Msgf("error converting file for storage: %s err: %s", file.Name, err)
// TODO: roll back commit on error (folders/files created need to be deleted)
return err
}