Signed by hanna SSH key fingerprint: SHA256:4g9cWhkAAw8gwqhJUcVbSnGEvdGwklW+1Aa/fMUu59k
crates/web/src/repo.rs +42 −6 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/HEAD +1 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/config +9 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/description +1 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/README.sample +5 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/post-receive +2 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/pre-receive +2 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/info/exclude +2 −0 crates/web/src/repo.rs +42 −6 Expand 1976 hidden lines 1977 1977 . filter ( |r| r. path. starts_with ( & prefix) && !r. path[ prefix. len ( ) ..] . contains ( '/' ) ) 1978 1978 . collect ( ) ; 1979 1979 1980 + let crumbs = path_crumbs ( & owner. username, & group. path) ; 1980 1981 let body = html ! { 1981 - h1 { ( owner. username) "/" ( group. path) } 1982 + h1 class="repo-slug group-slug" { 1983 + ( icon ( Icon :: Folder ) ) 1984 + a href={ "/" ( owner. username) } { ( owner. username) } 1985 + @for ( name, href) in & crumbs { 1986 + span class="slug-sep" { "/" } 1987 + a href=( href) { ( name) } 1988 + } 1989 + } 1982 1990 @if !subgroups. is_empty ( ) { 1983 - section { h2 { "Subgroups" } 1984 - ul class="repo-list" { 1985 - @for g in & subgroups { li { a href={ "/" ( owner. username) "/" ( g. path) } { ( g. path) } } } 1991 + section class="listing" { h2 { "Subgroups" } 1992 + ul class="repo-list card" { 1993 + @for g in & subgroups { 1994 + li { 1995 + a class="repo-row" href={ "/" ( owner. username) "/" ( g. path) } { 1996 + span class="repo-row-name" { ( icon ( Icon :: Folder ) ) span { ( g. path) } } 1997 + } 1998 + } 1999 + } 1986 2000 } 1987 2001 } 1988 2002 } Expand 257 hidden lines 2246 2260 2247 2261 2248 2262 2263 + 2264 + 2265 + 2266 + fn path_crumbs ( owner : & str , path : & str ) -> Vec < ( String , String ) > { 2267 + let mut out = Vec :: new ( ) ; 2268 + let mut cumulative = String :: new ( ) ; 2269 + for seg in path. split ( '/' ) { 2270 + if cumulative. is_empty ( ) { 2271 + cumulative = seg. to_string ( ) ; 2272 + } else { 2273 + cumulative = format ! ( "{cumulative}/{seg}" ) ; 2274 + } 2275 + out. push ( ( seg. to_string ( ) , format ! ( "/{owner}/{cumulative}" ) ) ) ; 2276 + } 2277 + out 2278 + } 2279 + 2249 2280 pub ( crate ) fn repo_header ( 2250 2281 state : & AppState , 2251 2282 ctx : & RepoCtx , Expand 9 hidden lines 2261 2292 } 2262 2293 } 2263 2294 } ; 2295 + 2296 + 2297 + let crumbs = path_crumbs ( & ctx. owner. username, & ctx. repo. path) ; 2264 2298 html ! { 2265 2299 div class="repo-head" { 2266 2300 h1 class="repo-slug" { 2267 2301 a href={ "/" ( ctx. owner. username) } { ( ctx. owner. username) } 2268 - span class="slug-sep" { "/" } 2269 - a href=( base) { ( ctx. repo. name) } 2302 + @for ( name, href) in & crumbs { 2303 + span class="slug-sep" { "/" } 2304 + a href=( href) { ( name) } 2305 + } 2270 2306 ( visibility_badge ( ctx. repo. visibility) ) 2271 2307 ( archived_badge ( ctx. repo. archived_at. is_some ( ) ) ) 2272 2308 }
data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/HEAD +1 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/config +9 −0 1 + [core] 2 + bare = true 3 + repositoryformatversion = 0 4 + filemode = true 5 + logallrefupdates = true 6 + [receive] 7 + denyNonFastForwards = false 8 + [gc] 9 + auto = 0
data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/description +1 −0 1 + Unnamed repository; edit this file 'description' to name the repository.
data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/README.sample +5 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/post-receive +2 −0 1 + 2 + exec "/nix/store/y5fybzdl01v4vgfy642hi70b83s976cq-fabrica-0.1.0/bin/.fabrica-wrapped" hook post-receive
data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/hooks/pre-receive +2 −0 data/repos/01/01kydt075vpteqnjzyms8v3vtm.git/info/exclude +2 −0 1 + # File patterns to ignore; see `git help ignore` for more information. 2 + # Lines that start with '#' are comments.