Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,7 @@ jobs:
"$ROOT/target/release/claim_executor" --source-root "$ROOT/dag" --source-root "$ROOT/src/v2" --plan-entry src/v2/workflow/ci_floor_plan.dag --plan-function gunbc_ci_floor_plan --notice-title "v2 claim corpus"
FLOOR_EXIT=$?
ROOT=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
CI_FLOOR_EXIT=$FLOOR_EXIT "$ROOT/target/release/gunbc" run --source-root dag --entry dag/tools/merge_admission_stamp.dag --function main
CI_FLOOR_EXIT=$FLOOR_EXIT "$ROOT/target/release/gunbc" run --source-root dag --source-root src/v2 --entry dag/tools/merge_admission_stamp.dag --function main
STAMP_EXIT=$?
if [ "$FLOOR_EXIT" -ne 0 ]; then exit "$FLOOR_EXIT"; fi
exit "$STAMP_EXIT"
Expand All @@ -288,7 +288,7 @@ jobs:
timeout-minutes: 5
- name: Merge-admission gate (receipt required; freshness block held until GatingEnforced)
run: |
'git' 'fetch' '--no-tags' 'origin' 'main' && 'env' '-C' '.' 'target/release/gunbc' 'run' '--source-root' 'dag' '--entry' 'dag/tools/merge_admission_gate.dag' '--function' 'main'
'git' 'fetch' '--no-tags' 'origin' 'main' && 'env' '-C' '.' 'target/release/gunbc' 'run' '--source-root' 'dag' '--source-root' 'src/v2' '--entry' 'dag/tools/merge_admission_gate.dag' '--function' 'main'
timeout-minutes: 5
deploy_dashboard_srv1:
runs-on: [self-hosted, linux, arm64, srv1]
Expand Down
28 changes: 27 additions & 1 deletion dag/extdeps/git/object_store.dag
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
module extdeps.git.object_store

import std.types { ContentHash, NonEmptyStr, Bytes, Map }
import std.integer { UInt8, NonNegativeInt }
import std.integer { UInt8, NonNegativeInt, PositiveInt }
import std.render_repeat_string_bootstrap { repeat_string }
import std.measure { ByteSize, byte_size, byte_size_count }
import std.bytes { bytes_octets, octets_bytes, utf8_encode_bytes }
import std.cache_interface { ContentAddressedByValue, WriteOnce }
Expand Down Expand Up @@ -38,6 +39,13 @@ data git_ls_files_authority: ExternalAuthority = ExternalAuthority {
}
}

data git_gitattributes_authority: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
locator: "git-scm.com/docs/gitattributes#_conflict_marker_size"
}
}

data git_update_ref_authority: ExternalAuthority = ExternalAuthority {
uri: Uri {
scheme: Https
Expand Down Expand Up @@ -522,6 +530,24 @@ type GitIndexStage
| GitIndexStageOurs
| GitIndexStageTheirs

type GitEffectiveConflictMarkerGrammar {
size: PositiveInt
}

data git_effective_conflict_marker_grammar_note: String = "Per-path effective conflict grammar after Git resolves gitattributes conflict-marker-size. Git defaults each marker to seven characters, but the attribute can choose another positive width for a path; consumers must observe the effective value rather than assume the default. The upstream fact is stored once as std.integer.PositiveInt and all three tokens derive from it, so empty, mismatched, and non-marker grammars are unwritable."

fn git_conflict_marker_begin(grammar: GitEffectiveConflictMarkerGrammar) -> String {
repeat_string(s: "<", n: grammar.size)
}

fn git_conflict_marker_separator(grammar: GitEffectiveConflictMarkerGrammar) -> String {
repeat_string(s: "=", n: grammar.size)
}

fn git_conflict_marker_end(grammar: GitEffectiveConflictMarkerGrammar) -> String {
repeat_string(s: ">", n: grammar.size)
}

type GitIndexEntry {
path: GitPath
mode: GitTreeMode
Expand Down
Loading
Loading