starting work on new commit logic
This commit is contained in:
@@ -49,3 +49,46 @@ func (m *Manager) CreateInitialCommit(fileList []database.File, branch string, c
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
// 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 {
|
||||
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
|
||||
var newCommit database.Commit
|
||||
newCommit.Branch = "master"
|
||||
hashBytes, err := CreateCommitHash(trackedFiles, commitMessage)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
currentTime := time.Now()
|
||||
newCommit.CommitHash = hashBytes
|
||||
newCommit.Number = 1
|
||||
newCommit.TrackedFiles = trackedFiles
|
||||
newCommit.Date = currentTime.String()
|
||||
folder := m.FilePaths.ObjectFolder + string(filepath.Separator) + hex.EncodeToString(hashBytes)
|
||||
err = os.Mkdir(folder, 0666)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to create commit directory in object dir: %s err: %s", folder, err)
|
||||
}
|
||||
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")
|
||||
filename, err := ConvertFileForStorage(&file, folder)
|
||||
if err != nil {
|
||||
// TODO: roll back commit on error (folders/files created need to be deleted)
|
||||
return err
|
||||
}
|
||||
file.BaseFilePath = filename
|
||||
}
|
||||
// TODO: THis needs to be the delta calculation for changed files
|
||||
err = m.dB.NewCommit(newCommit, branch)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
//var hashList [][]byte
|
||||
return nil
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user