GitSharp.Core.RefLogWriter.AppendOneRecord C# (CSharp) Method

AppendOneRecord() private static method

private static AppendOneRecord ( ObjectId oldId, ObjectId newId, PersonIdent ident, string msg, Repository db, string refName ) : void
oldId ObjectId
newId ObjectId
ident PersonIdent
msg string
db Repository
refName string
return void
        private static void AppendOneRecord(ObjectId oldId, ObjectId newId, PersonIdent ident, string msg, Repository db, string refName)
        {
            ident = ident == null ? new PersonIdent(db) : new PersonIdent(ident);

            var r = new StringBuilder();
            r.Append(ObjectId.ToString(oldId));
            r.Append(' ');
            r.Append(ObjectId.ToString(newId));
            r.Append(' ');
            r.Append(ident.ToExternalString());
            r.Append('\t');
            r.Append(msg);
            r.Append('\n');

            byte[] rec = Constants.encode(r.ToString());
            var logdir = new DirectoryInfo(Path.Combine(db.Directory.FullName, Constants.LOGS));
            var reflog = new FileInfo(Path.Combine(logdir.FullName, refName));

            if (reflog.Exists || db.Config.getCore().isLogAllRefUpdates())
            {
                DirectoryInfo refdir = reflog.Directory;

                if (!refdir.Exists && !refdir.Mkdirs())
                {
                    throw new IOException("Cannot create directory " + refdir);
                }

                using (var @out = new FileStream(reflog.FullName, System.IO.FileMode.Append, FileAccess.Write))
                {
                    @out.Write(rec, 0, rec.Length);
                }
            }
        }