| 2021-08-02 |
| ← jstein left | 00:08 |
| ← shokohsc left | 00:12 |
| → shokohsc joined | 00:13 |
| ← m0viefreak left | 00:23 |
| → adlternative joined | 00:30 |
| ← magic_ninja left | 00:43 |
| → magic_ninja joined | 00:44 |
| → hmmmas joined | 00:50 |
| ← hmmmas left | 00:51 |
| ← Null_A left | 00:59 |
| → gnoo joined | 01:08 |
| → jaggz joined | 01:10 |
| → Null_A joined | 01:13 |
| → physikoi joined | 01:14 |
| ← christall left | 01:16 |
| → christall joined | 01:17 |
| → PaMeDa joined | 01:18 |
| ← apauli left | 01:19 |
| ← physikoi left | 01:22 |
| ← foureyes left | 01:40 |
| → keypushe- joined | 01:52 |
| ← keypusher left | 01:52 |
| keypushe- → keypusher | 01:55 |
| → zebrag joined | 01:57 |
| ← AnAverageHuman left | 02:09 |
| → AnAverageHuman joined | 02:10 |
| ← jwillikers left | 02:11 |
| → finn_elija joined | 02:20 |
| ← FinnElija left | 02:20 |
| finn_elija → FinnElija | 02:20 |
| ← pizdets left | 02:38 |
| → pizdets_ joined | 02:38 |
| → hmmmas joined | 02:56 |
| ← Gurkenglas left | 03:13 |
| ← ham left | 03:15 |
| → ham2 joined | 03:16 |
| → Xatenev joined | 03:16 |
| ← Xatenev left | 03:16 |
| → Xatenev joined | 03:16 |
| ← Xatenev left | 03:16 |
| ← zebrag left | 03:28 |
| → apauli joined | 03:29 |
| ← jhulten left | 03:30 |
| → saroy joined | 03:30 |
| ← PaMeDa left | 03:32 |
| → thiago joined | 03:34 |
| → jhulten joined | 03:35 |
| ← cdown left | 03:38 |
| ← jhulten left | 03:40 |
| → thiago_ joined | 03:42 |
| ← thiago_ left | 03:43 |
| → amosbird joined | 03:52 |
| ← thiago left | 03:53 |
| → thiago joined | 04:04 |
| → vicfred joined | 04:05 |
| → jhulten joined | 04:05 |
| ← Null_A left | 04:09 |
| ← adamts left | 04:10 |
| → Null_A joined | 04:19 |
| ← AnAverageHuman left | 04:22 |
| ← jhulten left | 04:25 |
| ← thekingofbandit1 left | 04:34 |
| ← subopt left | 04:35 |
| ← vicfred left | 04:38 |
| → thekingofbandit joined | 04:38 |
| → PaMeDa joined | 04:42 |
| ← apauli left | 04:43 |
| ← thiago left | 04:49 |
| → jazzy joined | 04:50 |
| → ash_worksi joined | 04:50 |
| ← hgl- left | 04:54 |
| → hgl joined | 04:54 |
| → nwoob joined | 04:56 |
|
nwoob
| I have a branch named as "CS1-T1161-Move-Garmin-Statistics-Pace-(DEV)" without quotes | 04:57 |
|
| when I checkout to it I am moved to a detached head with commit sha, instead of branch. COuld someone please explain to me why that happens | 04:57 |
| ← hmmmas left | 05:03 |
|
nwoob
| ok, I got it i added origin/branch-name. that's why | 05:04 |
| ← Null_A left | 05:08 |
| → apauli joined | 05:10 |
| ← PaMeDa left | 05:11 |
| ← nwoob left | 05:14 |
| → thiago joined | 05:14 |
| → JanC_ joined | 05:19 |
| → Guest7058 joined | 05:20 |
| ← thiago left | 05:21 |
| ← JanC left | 05:21 |
| JanC_ → JanC | 05:21 |
| → nwoob joined | 05:24 |
|
Guest7058
| Hello, I'd like to ask ,What's the best way to learn git for the first time? | 05:24 |
| Guest7058 → nndwn | 05:26 |
| → PaMeDa joined | 05:27 |
|
ikke
| !book | 05:29 |
|
gitinfo
| There are several good books available about git; 'Pro Git' is probably the best: http://git-scm.com/book but also look at !bottomup !cs !gcs !designers !gitt !vcbe and !parable | 05:29 |
| ← apauli left | 05:29 |
| ← ash_worksi left | 05:32 |
|
nndwn
| haha i dont know this ebook is free , thanks | 05:33 |
| ← nndwn left | 05:36 |
|
ikke
| .trigger_edit book There are several good books available about git; 'Pro Git' is probably the best: https://git-scm.com/book but also look at !bottomup !cs !gcs !designers !gitt !vcbe and !parable | 05:38 |
|
gitinfo
| ikke: Okay. | 05:38 |
| → ash_worksi joined | 05:40 |
| ← nyah left | 05:40 |
| ← ferdna left | 05:41 |
| → jhulten joined | 05:44 |
| ← PaMeDa left | 05:45 |
| → PaMeDa joined | 05:47 |
| ← jhulten left | 05:49 |
| → jhulten joined | 05:54 |
| → shlomif joined | 05:57 |
| ← jhulten left | 05:59 |
| ← hbautista left | 06:00 |
| ← t3nj1n left | 06:03 |
| → mike joined | 06:03 |
| → gnooooo joined | 06:04 |
| mike → Guest1512 | 06:04 |
| ← gnoo left | 06:05 |
| ← arcatech left | 06:08 |
| ← nasamuffin left | 06:19 |
| ← pcarphin left | 06:20 |
| → Lord_of_Life_ joined | 06:22 |
| → palasso joined | 06:22 |
| → mat001 joined | 06:23 |
| ← Lord_of_Life left | 06:23 |
| Lord_of_Life_ → Lord_of_Life | 06:23 |
| → filePeter joined | 06:25 |
| → pcarphin joined | 06:30 |
| ← diverdude left | 06:33 |
| → diverdude joined | 06:48 |
| ← AbleBacon left | 06:55 |
| → sysh joined | 07:01 |
| → rfuentess joined | 07:03 |
| ← pulse left | 07:04 |
| ← unluckyshrubbery left | 07:04 |
| → t3nj1n joined | 07:05 |
| ← nwoob left | 07:07 |
| → YuGiOhJCJ joined | 07:14 |
| ← EvilDMP left | 07:15 |
| → EvilDMP joined | 07:16 |
| ← hgl left | 07:22 |
| → hgl joined | 07:22 |
| ← pcarphin left | 07:27 |
| → pcarphin1 joined | 07:28 |
| → jmcantrell joined | 07:28 |
| ← EvilDMP left | 07:30 |
| → theoceaniscool joined | 07:36 |
| → EvilDMP joined | 07:38 |
| ← saroy left | 07:39 |
| → saroy joined | 07:40 |
| ← EvilDMP left | 07:43 |
| → randomuser joined | 07:47 |
| ← t3nj1n left | 07:48 |
| ← mat001 left | 07:51 |
| ← randomuser left | 07:52 |
| ← saroy left | 07:53 |
| ← lessless left | 07:57 |
| → EvilDMP joined | 07:58 |
| → lessless joined | 07:58 |
| ← skapata left | 08:05 |
| ← theoceaniscool left | 08:09 |
| ← Samian left | 08:12 |
| → ykrons joined | 08:15 |
| ← jmcantrell left | 08:15 |
| → zeenk joined | 08:17 |
| → jmcantrell joined | 08:17 |
| → BenjiProd joined | 08:18 |
| → saroy joined | 08:19 |
| ← Vonter left | 08:19 |
| another| → another | 08:20 |
| another → another| | 08:20 |
| → randomuser joined | 08:21 |
| → theoceaniscool joined | 08:21 |
| ← Guest6611 left | 08:22 |
| ← Murr left | 08:22 |
| → nwoob joined | 08:22 |
| → Murr joined | 08:22 |
| → Vonter joined | 08:23 |
| ← keypusher left | 08:25 |
| ← randomuser left | 08:26 |
| → randomuser joined | 08:26 |
| → keypusher joined | 08:28 |
| → rahl joined | 08:29 |
| ← chmark96 left | 08:29 |
| → chmark96 joined | 08:29 |
| ← gnooooo left | 08:30 |
| ← rahl left | 08:30 |
| ← chmark96 left | 08:32 |
| → birkoff joined | 08:32 |
| ← birkoff left | 08:32 |
| → birkoff joined | 08:32 |
| → AnapodoPsalidaki joined | 08:33 |
|
Helmholtz
| How to gitignore all png except those which exist withing every `data/` dir? | 08:36 |
|
ikke
| Does *.png; !data/*.png work? | 08:36 |
|
gitinfo
| [!database_schema] Changing database schemas is a very complicated topic. Some reading: http://thedailywtf.com/Articles/Database-Changes-Done-Right.aspx | 08:36 |
| ← madewokherd left | 08:37 |
|
ikke
| ignore gitinfo here | 08:37 |
| → gnooooo joined | 08:38 |
|
Helmholtz
| ikke, thanks | 08:39 |
|
| that ; is insignificant right? I can just use 2 lines? | 08:39 |
|
ikke
| yes | 08:39 |
|
| It's just a way of me specifying 2 rules in a single line here | 08:39 |
| ← randomuser left | 08:42 |
| ← gnooooo left | 08:43 |
|
ash_worksi
| I thought I solved this question but I realized I did not | 08:47 |
| ← fossdd left | 08:48 |
| → fossdd joined | 08:48 |
|
ash_worksi
| so I was thinking, I might have a backend project where a dev messes around and wants to create it his own changes to the database; I figure they can commit their local migrations to their branch and then a dba can pull it and check it out and make an offical migration | 08:49 |
|
| what I'd like though is for projects to have an up-to-date schema for their dev databases | 08:49 |
|
| and I thought "oh well, the dba needs access to the project to begin with, so the can just dump the files in there and commit the project | 08:49 |
|
| but then I realized, "oh, but if you have multiple projects (microservices) using the database, then the dba would have to commit the files to each project" | 08:50 |
|
| I know this could be solved with a database-per-service, but right now, that's not feasible. Can I have a repo inside a repo where a dev can pull the latest changes to the database? | 08:51 |
|
geirha
| !submodule | 08:52 |
|
gitinfo
| git-submodule is ideal to add subsidiary git repositories to a git superproject when you do not control the subprojects or more specifically wish to fix the subproject at a specific revision even as the subproject changes upstream. See http://www.git-scm.com/book/en/Git-Tools-Submodules | 08:52 |
| ← avu left | 08:53 |
|
ash_worksi
| at the moment, the docker setup per project houses the microservice "app" in it's own directory (so for 'flipr' like flipr/app/src, flipr/app/Dockerfile, etc...) and each "fake" infrasture service in it's own directory (flipr/db/docker-entrypoint-initdb.d/schema.sql) | 08:53 |
|
| thanks geirha | 08:54 |
| → avu joined | 08:54 |
| ← hnOsmium0001 left | 08:56 |
| ← ash_worksi left | 09:00 |
| ← fossdd left | 09:03 |
| → fossdd joined | 09:04 |
| → gnoo joined | 09:04 |
| → unluckyshrubbery joined | 09:05 |
| → randomuser joined | 09:06 |
| ← Betal left | 09:10 |
| → natrys joined | 09:13 |
| ← fossdd left | 09:15 |
| ← tejr left | 09:17 |
| ← gnoo left | 09:20 |
| ← chexum left | 09:20 |
| → chexum joined | 09:20 |
| → gnoo joined | 09:21 |
| ← jmcantrell left | 09:22 |
| → mbalmer joined | 09:27 |
| ← randomuser left | 09:30 |
| → securethemews joined | 09:30 |
| → tejr joined | 09:31 |
| → randomuser joined | 09:34 |
| ← randomuser left | 09:42 |
| ← gnoo left | 09:45 |
| → Gurkenglas joined | 09:51 |
| ← extor left | 09:56 |
| ← jmft2 left | 10:11 |
| → jmft2 joined | 10:11 |
| ← jmft2 left | 10:11 |
| ← nwoob left | 10:15 |
| ← BenjiProd left | 10:20 |
| → BenjiProd joined | 10:20 |
| → extor joined | 10:21 |
| → Wuzzy joined | 10:29 |
| ← igemnace left | 10:33 |
| ← Guest70 left | 10:35 |
| ← sudoforge left | 10:46 |
| → pulse joined | 10:49 |
| ← YuGiOhJCJ left | 10:50 |
| → manveru joined | 10:52 |
|
manveru
| hi folks, i'm trying to figure out a good way to fix a race condition for `git init` when two or more inits for the same directory run at the same time, copying the templates will fail because it already exists | 10:55 |
| → jwillikers joined | 10:56 |
|
manveru
| i guess i'll have to work around that myself using flock or the like, or is there some hidden option in git that makes this just work? :) | 10:57 |
|
geirha
| mkdir could also serve as a lock. mkdir repo && git init repo | 10:58 |
|
| if dir already exists, mkdir fails and it won't attempt git init | 10:58 |
| ← adlternative left | 11:00 |
|
manveru
| hmm, i guess that'd be a bit more cross-platform that flock, yeah | 11:00 |
|
Gurkenglas
| Is there a way to annotate two branches as being different by merely a refactoring, which should have the meaning that they "have the same behavior" and merging any branch onto both should preserve this? | 11:01 |
|
osse
| there's no way to annotate tags at all beside their names | 11:05 |
|
| annoate branches I mean | 11:06 |
|
Helmholtz
| Can I ask a github question? Can I watch a repo for new commits? | 11:08 |
|
securethemews
| Helmholtz, you can use the RSS feed i think | 11:12 |
|
| https://github.com/<user>/<repo>/commits/<branch>.atom | 11:15 |
|
Helmholtz
| securethemews, thanks. | 11:21 |
| ← srinidhi left | 11:22 |
| → darkbit joined | 11:32 |
|
osse
| nesmysl: what's your usecase for renaming the remote? | 11:32 |
|
| I just removed the artificial cosntraint and now all of a sudden I have to justify it | 11:32 |
| ← jwillikers left | 11:35 |
| ← rfuentess left | 11:40 |
| → rfuentess joined | 11:46 |
| ← saroy left | 11:48 |
| → varaindemian joined | 11:50 |
| ← reprazent left | 11:54 |
|
jast
| osse: it's basically a clone of git://git.kernel.org/pub/scm/git/git-htmldocs.git | 11:54 |
| → reprazent joined | 11:59 |
| ← shailangsa left | 12:00 |
| → roadie joined | 12:01 |
| → shailangsa joined | 12:15 |
| → TomyWork joined | 12:19 |
| → mat001 joined | 12:19 |
|
jast
| Helmholtz: github supports webhooks for repo updates, which means you can connect your repo to notification services etc. | 12:20 |
|
| take a look at the repo settings | 12:20 |
|
Helmholtz
| jast, does it work for a repo in which I don't own | 12:20 |
|
jast
| only if the owner will set it up for you | 12:21 |
| → AnAverageHuman joined | 12:23 |
| ← Maxattax left | 12:26 |
| → m0viefreak joined | 12:26 |
| → Maxattax joined | 12:29 |
| → CarloWood joined | 12:31 |
| ← Guest1512 left | 12:32 |
|
CarloWood
| Hi, I am totally stuck again and can't find the answer online :/. I have two remotes 'origin' (remote) and 'github' (what I use). The upstream author (origin) now added a new branch 'fix' that he wants me to test. | 12:33 |
|
| But I can't find out how to get it and check it out locally :/ | 12:33 |
|
jast
| if you don't need it in your github remote just yet, the easiest way is: git fetch origin; git checkout fix | 12:33 |
|
CarloWood
| git fetch --all | 12:33 |
|
| didn't get it | 12:33 |
|
jast
| hm, possibly your remote is setup to fetch a subset of refs? check with: git config remote.origin.fetch | 12:34 |
|
CarloWood
| Looking at my history, I did that - and it gave the error that 'fix' is unknown | 12:34 |
|
| +refs/heads/main:refs/remotes/origin/main | 12:34 |
|
jast
| yeah, that's the issue | 12:35 |
|
| replace 'main' with '*' twice (easiest to just edit .git/config) | 12:35 |
|
CarloWood
| main? I am not even using main.. I use master | 12:35 |
|
| Oh, I am using main here :/ | 12:35 |
|
| well | 12:35 |
|
jast
| yeah, it's been github's default for a while now | 12:35 |
|
CarloWood
| I am getting too tired of politics to go along with it even in my coding projects. | 12:36 |
|
jast
| I don't exactly follow the reasoning behind it, but it's not really a big deal in practice | 12:36 |
|
| if you init repos by pushing something from your local repo you can just use your own default | 12:36 |
| ← shailangsa left | 12:36 |
| ← reprazent left | 12:37 |
|
CarloWood
| It's because next to the n-word we now also have the m-word. I'll just ignore everything, people are crazy these times. | 12:38 |
|
jast
| btw this kind of fetch setup is used if you pass --single-branch or --depth during the initial clone | 12:38 |
|
| the wildcard version is the default | 12:38 |
|
CarloWood
| I dunno how it got this way :/ | 12:38 |
|
| He has a lot of branches (I guess), and I suppose I didn't want to fetch them all. I was just interested in main. | 12:39 |
|
jast
| it's even worse in Germany where some people want to genderify many descriptive nouns for groups/positions of people, because German historically used a generic masculine form for many of these | 12:39 |
|
| yeah, makes sense | 12:40 |
| → adamts joined | 12:40 |
|
CarloWood
| There is little sanity left in the world; people are seeing things everywhere that do not exist (only in their heads) and make a HUGE fuss about it. | 12:40 |
| ← PinealGlandOptic left | 12:40 |
|
jast
| I mean people are entitled to their opinions, the real shame is that so many people actively resist proper discussion of stuff like this | 12:41 |
|
CarloWood
| The worst part is that a sphere has been created where it became all undiscusable. I wouldn't have been surpriced if I had been kicked from this channel for saying I don't care about what people think and still use 'master' as main branch name :p. Hysteria rules. | 12:42 |
|
| Ha! I was already typing that. Yes. | 12:42 |
|
| And moderation of everything except one opinion on many subjects. | 12:42 |
| → reprazent joined | 12:43 |
| ← jazzy left | 12:43 |
|
CarloWood
| Ok, so I am here: | 12:44 |
|
| >git checkout fix | 12:44 |
|
| error: pathspec 'fix' did not match any file(s) known to git | 12:44 |
|
jast
| old git version? | 12:44 |
|
CarloWood
| Can I only fix that by changing remote.origin.fetch ? | 12:44 |
|
jast
| try: git checkout -t origin/fix | 12:44 |
|
| oh | 12:44 |
|
CarloWood
| fatal: 'origin/fix' is not a commit and a branch 'fix' cannot be created from it | 12:44 |
|
jast
| you can manually fetch another branch but it's cumbersome | 12:45 |
|
| git fetch origin refs/heads/fix:refs/remotes/origin/fix | 12:45 |
|
CarloWood
| From https://github.com/janekb04/glfwpp | 12:46 |
|
| * [new branch] fix -> origin/fix | 12:46 |
|
jast
| it won't auto-update on subsequent 'git fetch'es, either | 12:46 |
|
CarloWood
| >git checkout -t origin/fix | 12:46 |
|
| M external/glfw | 12:46 |
|
| M external/imgui/imgui | 12:46 |
|
| fatal: Cannot setup tracking information; starting point 'origin/fix' is not a branch. | 12:46 |
|
| He said he made a branch... | 12:46 |
|
jast
| hmm, maybe there's a check against the fetch config somewhere in there | 12:46 |
|
CarloWood
| Here is his email: I applied fixes and pushed them to the `fix` branch. It should fix issues #16, #20, #79 and #80. Let me know if this solves your issues. If it does, we may close this PR and I will merge the `fix` branch. | 12:47 |
| → adlternative joined | 12:48 |
|
jast
| yeah, the branch exists as you can see from the manual fetch updating something | 12:48 |
| → durham joined | 12:48 |
|
jast
| I don't know why the automatic tracking setup isn't working but we can do the manual version: | 12:48 |
|
| git checkout -b fix origin/fix | 12:49 |
|
CarloWood
| That worked | 12:49 |
| ← durham left | 12:49 |
|
jast
| anything is possible... you just have to know an extra 35 git commands :-) | 12:49 |
| → durham joined | 12:50 |
|
CarloWood
| Thanks for you help as always <3 | 12:50 |
|
jast
| you're welcome | 12:50 |
| → shailangsa joined | 12:52 |
|
CarloWood
| Why did you also fetch refs/heads/fix ? | 12:52 |
|
| in: git fetch origin refs/heads/fix:refs/remotes/origin/fix | 12:53 |
|
jast
| no, that's a refspec | 12:53 |
|
| the left half of the foo:bar is the source ref on the remote side | 12:53 |
|
| and it specifies that should go into the local ref specified on the right | 12:53 |
|
CarloWood
| Ah ok - so all branches are put in heads/ ? There is like no refs/branches/ ? :) | 12:54 |
|
jast
| exactly, some of the terminology is a bit... historical | 12:54 |
|
| refs/heads/ is the base namespace for local branches | 12:54 |
|
CarloWood
| ok, I am getting it, thanks :) | 12:55 |
|
jast
| 'git branch' and many other tools just hide it from you | 12:55 |
|
| you can see the real refs in your repo: git show-ref | 12:55 |
| → gh34 joined | 12:55 |
|
CarloWood
| Not compiling... so I'll have to ask for a pull request I guess. Hence, I need to push this branch to 'github' | 12:58 |
|
| git push github fix | 12:58 |
|
| ? | 12:58 |
|
jast
| yes | 12:58 |
|
| add -u if you want this as your upstream branch | 12:58 |
|
| makes it easier to keep in sync with your version of the branch | 12:59 |
|
CarloWood
| Basically he ignored all my previous pull requests, wtf. | 13:05 |
|
jast
| nice | 13:05 |
| → trace1918 joined | 13:05 |
|
CarloWood
| I hate ppl who are sloppy - if that is the upstream author then why am I using this :\ | 13:05 |
|
jast
| yeah, bit disappointing | 13:06 |
|
| always nice when you report an issue complete with analysis, or file a PR, and the maintainer just applies it a few hours later | 13:06 |
|
| like when I found an off-by-thousand bug in a rate limiter | 13:07 |
|
CarloWood
| I have fixed dramatic/serious bugs in the past (and being a perfectionist, then they were not just fixed, but fixed in a really robust general way)... only to be ignored for YEARS because the maintainer doesn't have the time to review patches that are a bit complex. | 13:09 |
|
| Aka, added perfect support for multi-HEAD setups (multiple monitors) to the window manager that was used with Gnome (now they use a different window managers, but that was metacity). I kept updating the collisions of my patch for 5 years and then gave up. | 13:10 |
|
jast
| I tend to make smaller contributions outside of work, so I hardly run into that kind of issue | 13:10 |
|
| but yeah, that sounds seriously frustrating | 13:11 |
|
CarloWood
| Also fixed HTTP pipelining support in libcurl in a perfect way - but the maintainer had no time (or expertise to understand) to review it; and 3 years afterwards they REMOVED all support for pipelining completely from curl (we are too stupid). | 13:11 |
|
jast
| dang | 13:12 |
|
CarloWood
| :/ | 13:12 |
|
jast
| I remember a user survey from the curl maintainer ("which features do you use? ... want?") | 13:12 |
|
| there was websocket support on the list | 13:12 |
|
| as if that would ever happen. make it actually usable would be a nightmare, and I don't want to know what would have to happen to the code | 13:13 |
|
CarloWood
| I am ok with it when people are too stupid, but then just blindly merge what I wrote grrr. A good experience in that regard I had with lib M4RI (a library for fast arithmetic with dense matrices over F2), THE open source library used for fast matrix stuff over F2). | 13:14 |
|
| He let me make huge changes, with direct git access even - after only reviewing what I had done for other things on the internet. And they were insane - no way he could understand what I was doing lol. Well, the objective was clear: I was inverting the bits in the base word, so bit 0 became bit 63 etc. | 13:16 |
|
| Afterwards he said only in the end whenever everything fell into place again he saw that I was right that this was better. | 13:16 |
|
| So, that was a lot of trust imho. | 13:17 |
|
jast
| true | 13:17 |
|
| working on low level numerical/algebra code isn't my cup of tea | 13:18 |
|
| I'm much happier letting other people think about that and just using their work :) | 13:19 |
|
CarloWood
| Most of that library is totally over my head too - but I know something, after having written an implementation from scratch that does elliptic curve crypto that are over GF(2^n) | 13:20 |
|
jast
| I used to spend a fair bit of time on IRC and its shortcomings (without any amazing results to show for it, but it was interesting)... but at this point there's too much webshit to compete with | 13:20 |
|
| I actually work for a company that does chat webshit for a specific class of use cases, and now I can focus on scaling that up | 13:21 |
|
CarloWood
| The "problem" was to do it in a way that didn't introduce now bugs. So I wrapped everything in C++ classes first to get typesafety and was able to make changes in parts while still being able to run the testsuite. | 13:21 |
|
| So, that created a really huge mess. | 13:21 |
|
| s/now/new/ | 13:21 |
|
jast
| a mess called C++ ;D | 13:21 |
|
CarloWood
| heheh | 13:21 |
|
jast
| I'm introducing a new component at work written in Rust, my first project with it | 13:21 |
|
| it's been interesting | 13:22 |
|
osse
| I want to do that to | 13:22 |
|
| o | 13:22 |
|
jast
| and it certainly removes a few headaches with me needing shared memory for performance | 13:22 |
|
osse
| But stuff depends on stuff that depends on stuff that uses a library for a protocol and so on | 13:23 |
|
CarloWood
| I am too old to switch to Rust (or anything new). Just going to do C++ till I die. | 13:23 |
|
jast
| "too old" | 13:23 |
|
| nice excuse :p | 13:23 |
|
CarloWood
| Learning vulkan now though - but hey, it is C++ :) | 13:23 |
|
osse
| So I can't just write a new thing in a different language without rewriting some other stuff | 13:23 |
|
jast
| the cool thing is that the types make sure I can't read/write the shared memory objects without obtaining a lock first | 13:24 |
| ← roadie left | 13:24 |
|
CarloWood
| I wrote code for that in C++ | 13:24 |
|
| It's wonderful - and nobody seems to notice it (or use it). It is weird. | 13:25 |
|
jast
| and the lock automatically releases when it goes out of scope, and I can't pass it to places that can copy it | 13:25 |
| ← Gurkenglas left | 13:25 |
| → roadie joined | 13:25 |
|
CarloWood
| https://github.com/CarloWood/ai-threadsafe | 13:25 |
|
| I bet my design is even better? :) | 13:26 |
|
jast
| the latter would probably be hard or impossible in a language without borrow checking | 13:26 |
|
CarloWood
| what you think | 13:26 |
| ← trace1918 left | 13:27 |
|
jast
| in terms of how clean it is, they're fairly similar | 13:27 |
|
CarloWood
| This allows you to write code that is read/write lock aware, easily convertable between different types of mutexes though: read/write, or just a plain mutex, or no mutex at all but just checking (in debug mode) that there is indeed only one thread at a time access it. | 13:28 |
|
osse
| jast: what kind of component is it? How does it fit into the rest? | 13:28 |
|
jast
| well, we have a fairly mixed read/write load and make heavy use of transactions and row locking to ensure data consistency | 13:28 |
|
| but some operations are tricky to lock because of the sheer number of different tables and rows involved | 13:29 |
|
| so the new component is a network service that other components contact to perform these critical operations entirely in RAM | 13:29 |
|
| and they're committed to the database in near-realtime | 13:30 |
|
CarloWood
| Taking a read lock (using just mutexes too) gives const& access only. You can convert write-locks to read-locks of course (either because the former is derived from the latter, or by seamless going from a write lock to a read lock), and visa versa (going from a readlock to a writelock without releasing the read first of course). You can write fuctions that take an accessor object, guaranteeing that the object is already locked etc. | 13:30 |
|
jast
| basically the component enforces an ordering on operations but lets these operations run in typically <1ms, the only downside being that a power loss or machine crash can lose a second of data | 13:31 |
| → AbleBacon joined | 13:31 |
|
CarloWood
| Oh - well, everything is in ram here. In the ends they are just atomic variables no? It's just the API that makes it impossible to make mistakes. | 13:31 |
|
jast
| yeah | 13:32 |
|
CarloWood
| Hardly a downside if the effect of a 1s delay is that it is much much faster. | 13:32 |
|
jast
| and these are entire data structures, so they're "not that atomic" | 13:32 |
|
| but the locking makes them so | 13:32 |
|
CarloWood
| the data structures that are protected are not atomic, otherwise you wouldn't even need locks. | 13:33 |
|
jast
| exactly | 13:33 |
|
CarloWood
| I mean, the locks are atomics. | 13:33 |
|
jast
| yeah | 13:33 |
|
CarloWood
| No database here, or locks-over-networks :p. Just atomic vars in ram. | 13:33 |
|
jast
| precisely | 13:33 |
|
CarloWood
| I did write an API for locking files though... | 13:34 |
|
jast
| that was the design idea, to make it virtually impossible for an operation to block | 13:34 |
|
| (let's not talk about interrupts and swapping and such...) | 13:34 |
|
CarloWood
| Things that are "perfect" usually tend to be a lot more complex than what people expect/accept. I think that is one reason why people don't use my stuff quickly, steep learning curves and no documentation :p | 13:35 |
| ← roadie left | 13:35 |
|
jast
| and then the whole thing uses a brokerless message queue approach to have the components communicate | 13:35 |
|
| which helps abstract away some short-term temporary failures without pretending that networks never fail | 13:35 |
| → ThorMojito joined | 13:36 |
|
CarloWood
| This is what I like about vulkan (that I am now learning): a very huge complex API that requires you to do every little detail. Yet, it is the only way to really get everything out of it. And people are apparently (finally) willing to use it in order to get the performance increases. | 13:36 |
|
jast
| I don't really want to get into that myself | 13:37 |
|
| but one of the projects on "my list"(tm) is a 3d render engine that simulates hand-drawing... not just cel shading but actual contours (and maybe even textures) that look human... which I suspect is just about impossible to hardware-accelerate | 13:37 |
|
| I mean maybe using something like cuda/opencl... but I'd first have to start the project, and I suspect I wouldn't start out with that. in the end the question is moot because I don't really have time to do it anyway :> | 13:39 |
|
CarloWood
| What you describe I like - sounds like you are not afraid to write complex code when that is necessary to make things robust under ALL circumstances - and not write some half-arsed then subsequently keeps having problems over the years, requiring kludge upon kludge to work around problems, that never CAN be fixed (aka, if you ignore network failures from the get go, you will never be able to make REALLY reliable. Certainly not | 13:40 |
|
| "later on") | 13:40 |
| → nyah joined | 13:40 |
|
jast
| yeah, we've been through a few iterations with this codebase | 13:40 |
|
bookworm
| maybe that discussion has outlived this channel's topic and should move to a query | 13:40 |
|
jast
| hey, off topic is allowed here as long as it's not getting in the way of on topic stuff, I don't make the rules | 13:41 |
|
| (actually I do, but that's beside the point :P) | 13:41 |
|
CarloWood
| I'm fine with closing the discussion anyway - and going back to work :) | 13:41 |
| ← Shentino left | 13:51 |
| → nvmd joined | 13:51 |
| ← varaindemian left | 13:54 |
| → otisolsen70 joined | 13:58 |
| → jazzy joined | 14:01 |
| → roadie joined | 14:01 |
| → Shentino joined | 14:02 |
| → randomuser joined | 14:04 |
|
cbreak
| jast: how about using a network like stylegan? | 14:06 |
|
| or an other image-to-image translation network? | 14:06 |
|
CarloWood
| I'd love to see (have) A.I. that can tell IRC discussions apart in channels. Then you can just ignore a "discussion" without muting people completely. Or highly one that you are actively interested in. | 14:07 |
|
| s/highly/highlight/ | 14:07 |
|
| I was thinking about this before because I felt the need for it when /ignore-ing someone; in that case you not just want to ignore that person, but also every discussion they are involved in (seeing just one side of a discussion is highly annoying). | 14:08 |
| → sudoforge joined | 14:08 |
|
jast
| cbreak: I was thinking of making this usable as a 3d engine, where you can render arbitrary scenes with animation, ideally in realtime | 14:09 |
|
| AI isn't that great unfortunately | 14:09 |
|
| I don't usually trust it to filter my inputs for me (though I make an exception for spam with an "unsure" bucket | 14:09 |
|
cbreak
| the way it'd work is to render something normally, then use style transfer to "stylize" it | 14:10 |
|
jast
| just a while ago one of our customers at work reported a deepl translation that said the exact opposite of the original (and not just a simple negation in the wording, it was a completely different sentence) | 14:10 |
|
CarloWood
| Actually, I think this is technically possible already at this time. It seems a lot less difficult then Watson, the AI playing jeopardy :p. | 14:10 |
|
jast
| and it kind of sucks if your customer says "I'm not at all happy with how your service handled this and I'm not sure I'll do business with you again" and it gets translated to "I'm very happy with your service" | 14:12 |
|
osse
| CarloWood: sounds like the kind of thing that makes your IRC client use 40 % CPU continuously :p | 14:12 |
|
CarloWood
| osso: LOL | 14:12 |
|
jast
| no, to achieve that you just implement it with electron :> | 14:12 |
|
cbreak
| jast: sounds good. Always be friendly | 14:12 |
|
jast
| that's another thing we need more of: stuff replaced by stuff that's based on electron | 14:13 |
|
cbreak
| jast: but language translation is much harder than image translation | 14:13 |
|
| https://genekogan.com/works/style-transfer/ // 5 years old, modern architectures are better | 14:13 |
|
jast
| eh, I've yet to see really amazing results | 14:13 |
|
| and, simply put, I don't think AI the way it's done currently is sustainable | 14:14 |
|
CarloWood
| There is no "AI" yet. | 14:14 |
|
jast
| it shines in narrow domains, sure | 14:14 |
|
| but there is no known model that scales to larger parts of the real world | 14:14 |
|
CarloWood
| Just sophisticated pattern recognition. | 14:15 |
|
jast
| and as long as that doesn't exist, you'll keep having weird glitches in unexpected corner cases | 14:15 |
|
cbreak
| jast: so? | 14:15 |
|
osse
| easier if we let the AI dictate the real world | 14:15 |
|
cbreak
| that's like saying "programming is not sustainable" | 14:15 |
|
| just because you have to write new programs for every new problem | 14:15 |
|
jast
| in programming you have a different class of failures | 14:15 |
|
osse
| Like Rehoboam | 14:15 |
|
jast
| but if an AI model fails in particular ways, often the only thing you do is retrain from scratch | 14:15 |
| → varaindemian joined | 14:15 |
|
cbreak
| I use machine learning at work, and it works _SO_MUCH_ better than any alternative, it's not even funny | 14:16 |
|
jast
| as I said... if the problem domain is narrow enough, it's usually fine | 14:16 |
|
CarloWood
| The AI's for self-driving cars will still look at pure noise and tell you that is a truck that you have to evade and drive into the side of the road. I mean, if they can't tell noise from the real thing, what are they doing? | 14:16 |
|
cbreak
| translating an image is quite narrow domain | 14:16 |
|
jast
| depends on the translation | 14:16 |
|
cbreak
| CarloWood: they can tell noise from the real thing | 14:16 |
|
CarloWood
| Not if you feed them just the right noise. | 14:17 |
|
cbreak
| outlier detection is easy | 14:17 |
|
jast
| but often, extensive domain knowledge is required | 14:17 |
|
cbreak
| if you feed them the right noise, then it's not noise, it's data | 14:17 |
|
jast
| for example, trucks will often have speed limit signs attached to their rear | 14:17 |
|
CarloWood
| It will look like noise to us :p | 14:17 |
|
jast
| and adversarial samples are definitely a thing | 14:17 |
|
cbreak
| CarloWood: do you know "optical illusions"? | 14:17 |
| → skapata joined | 14:17 |
| ← skapata left | 14:17 |
| → skapata joined | 14:17 |
|
cbreak
| the old school kind | 14:17 |
|
CarloWood
| https://www.bbc.com/news/technology-41845878 | 14:18 |
|
cbreak
| those are basically adversarial images that work on humans | 14:18 |
|
jast
| optical illusions are fairly well documented and consistent between humans, but with AI potentially every new model implementation will have entirely different failure modes | 14:18 |
|
CarloWood
| Computers can be fooled into thinking a picture of a taxi is a dog just by changing one pixel, suggests research. | 14:18 |
|
cbreak
| and depending on how good your vision algorithm is, they also work on those | 14:18 |
|
CarloWood
| ^^^ quote from the above article | 14:18 |
|
cbreak
| CarloWood: so? | 14:18 |
|
CarloWood
| So they are not intelligent :p. | 14:19 |
|
cbreak
| of course they're not | 14:19 |
|
CarloWood
| They just classify | 14:19 |
|
cbreak
| they just classify better than any human could | 14:19 |
|
jast
| I recall a paper in which they fed images into a popular image recognizer and its recognition rates went down by a lot when they just shifted the whole image to the right by 50 pixels | 14:19 |
|
CarloWood
| Well, that was the original discussion topic (ish) | 14:19 |
|
cbreak
| the original topic was: can AI translate an image into something that looks hand drawn? | 14:19 |
|
jast
| the point is that failure modes are subtle | 14:20 |
|
cbreak
| and my claim is: Yeah, I think it can | 14:20 |
|
jast
| training is hard | 14:20 |
|
| fixing training mistakes can be impossible, or worse you'll notice it too late | 14:20 |
|
CarloWood
| I was talking about this (sub)topic: | 14:20 |
|
| <jast> and, simply put, I don't think AI the way it's done currently is sustainable | 14:20 |
|
cbreak
| jast: there are newer classifiers that are affine-transformation invariant | 14:20 |
|
CarloWood
| <CarloWood> There is no "AI" yet. | 14:20 |
|
| <jast> it shines in narrow domains | 14:20 |
|
jast
| and there's always a point at which you stop being able to train more things into the same network | 14:20 |
|
cbreak
| and for example for this purpose, you'd use a CNN, which is inherently position invariant | 14:21 |
|
| since it's convolutional | 14:21 |
|
jast
| this was actually a paper about a CNN-based recognizer | 14:21 |
|
cbreak
| recognizers are not convolutional | 14:21 |
|
| they always have a FC tail | 14:21 |
|
| that's the problem | 14:21 |
|
| if you want to make them position independent, you have to be more clever | 14:21 |
|
jast
| here's the paper btw: https://www.jmlr.org/papers/volume20/19-519/19-519.pdf | 14:22 |
|
cbreak
| I'm not personally working with classifiers, so I don't know the tricks they have nowadays, but I think it involves extracting features in a spatially invariant representation | 14:22 |
| ← adlternative left | 14:23 |
|
jast
| they specifically argue that CNNs aren't actually that position-invariant | 14:23 |
|
cbreak
| depends on how careful you are with implementing them | 14:23 |
| → Samian joined | 14:24 |
|
cbreak
| all the ones I work with are | 14:24 |
|
jast
| I believe they tested six different reference implementations (from 2019) | 14:24 |
| ← nyah left | 14:25 |
|
jast
| and the sampling argument seems quite sound to me | 14:26 |
| → subopt joined | 14:26 |
| → nyah joined | 14:27 |
| → nobody_ joined | 14:27 |
| ← sysh left | 14:27 |
|
jast
| and I guess you can address this by mangling the data between layers, but how common is that in common implementations? I have no idea :) | 14:28 |
|
cbreak
| the way it's addressed in the networks I work with is by translating from an image to an other | 14:29 |
|
jast
| you mean enhancing the training set? | 14:29 |
|
cbreak
| each output pixel is determined deterministically from only the input pixel in its region of information | 14:29 |
|
| no | 14:29 |
|
| architecting the network | 14:29 |
|
| the network has no information about the position of a pixel in the image, so it can not be dependent on it either | 14:30 |
|
jast
| that would make it invariant to positional changes but not to changes in scale | 14:30 |
|
cbreak
| indeed. | 14:30 |
|
| my network works on outputs of renderers | 14:31 |
|
| so you can't really scale those easily | 14:31 |
|
| (without destroying the information it needs to do its job) | 14:31 |
|
jast
| which makes your domain quite a bit narrower than image translation in other contexts :) | 14:31 |
|
cbreak
| yeah. | 14:31 |
|
| but the same idea applies to style transfer too, if you want it | 14:32 |
|
jast
| humanization can cause deviations by a fair bit more than a distance of one pixel, though | 14:33 |
|
cbreak
| although, I'm not sure if scale invariance even means anything for translating an image into a hand-drawn sketch. | 14:34 |
| ← randomuser left | 14:34 |
|
cbreak
| would you want all lines in the sketch to become thinner? or would you want less information to be extracted? I'd expect the latter | 14:34 |
|
jast
| I'd want the lines to be jittery for instance if modeling a bad artist | 14:35 |
|
cbreak
| you get that naturally | 14:35 |
|
jast
| and curves and straight lines to be less perfect and more like they follow the natural movement of the joints | 14:35 |
|
cbreak
| the opposite is much harder, temporal stability in image translation algorithms is... not the default :) | 14:35 |
|
jast
| so you'd have "straight" lines that tend to be slightly curved around the artist's arm | 14:36 |
|
| and then for animation the parameters shouldn't deviate too much between frames | 14:37 |
|
| but still deviate a little so it looks like each frame was drawn separately | 14:37 |
| → adlternative joined | 14:37 |
| → mike18 joined | 14:38 |
|
mike18
| hi | 14:38 |
|
| does git clone have a timeout i can set? | 14:38 |
|
| and can i only clone master branch? | 14:38 |
|
| or the latest commit? | 14:38 |
|
| of master branch | 14:39 |
|
| or another branch | 14:39 |
|
cbreak
| you can do the latter with --branch master --depth 1 | 14:39 |
|
mike18
| and the timeout param? | 14:39 |
|
jast
| there's no built in timeout option | 14:39 |
|
mike18
| whats default? | 14:39 |
|
cbreak
| ssh has a timeout probably | 14:39 |
|
jast
| TCP timeout from system or SSH timeout | 14:39 |
|
| (or HTTP timeout if you're using HTTP... in which case it can potentially be customized with curl settings) | 14:40 |
|
mike18
| and https clone? | 14:40 |
| → lpapp joined | 14:40 |
|
lpapp
| hi, how to get a git diff between main and my branch for particular filepaths? | 14:40 |
|
| git diff main..HEAD -- filepath kind of thing | 14:40 |
|
| except that the current branch has been rebased a few times on top of main | 14:40 |
|
mike18
| @jast how to set the timeout for clone with https? | 14:41 |
|
jast
| hm, looks like libcurl doesn't let you configure it externally | 14:42 |
| → arcatech joined | 14:42 |
|
mike18
| @jast libcurl? | 14:42 |
|
jast
| libcurl is the library git uses internally to do HTTP operations | 14:43 |
|
mike18
| @jast does git clone use libcurl? | 14:43 |
|
jast
| and git doesn't expose an option to control timeouts, nor does libcurl (to the end user) | 14:43 |
| → Xaldafax joined | 14:43 |
|
jast
| if you're running the clone from a script, you could try and wrap a timeout of your own around the whole command, but that's a bit tricky | 14:43 |
|
| lpapp: what kind of problems are the rebases causing you when trying that? | 14:44 |
| ← nobody_ left | 14:45 |
|
cbreak
| lpapp: git diff yourbranch main -- file | 14:45 |
| → Gurkenglas joined | 14:46 |
|
mike18
| @jast so git clone will hang forever? | 14:46 |
|
jast
| mike18: normally it will timeout eventually due to the underlying TCP timeouts (which can be several minutes after the data was received) | 14:46 |
|
mike18
| after 30 min? | 14:46 |
|
cbreak
| I think standard tcp timeout can be in the order of hours or days | 14:46 |
|
jast
| however if a remote server is being malicious or very, very slow, it could take a lot longer | 14:46 |
|
| on linux, TCP timeouts are usually due to a limit on retries, and a factor on how long the delay between retries scales up | 14:47 |
|
lpapp
| cbreak: yep, I tried what I wrote out, and I am surprised that it just worked :D | 14:47 |
| → hnOsmium0001 joined | 14:47 |
|
mike18
| jast: i think i was stuck in git clone of the github repo - meaning it didnt complete... | 14:47 |
|
lpapp
| My assumption was wrong that rebase could break it | 14:47 |
|
| jast: nothing apparently, thanks :D | 14:48 |
|
jast
| :D | 14:48 |
| ← jazzy left | 14:48 |
|
cbreak
| lpapp: git diff doesn't look at history | 14:48 |
|
| just at state | 14:48 |
|
jast
| yeah, diff is all "compare this tree to this tree" | 14:48 |
|
lpapp
| before merging my feature branch to main, how would you find all the TODOs added by me? | 14:49 |
|
| in other words, I would not like to get the TODOs that is there in main | 14:49 |
|
jast
| git log main..feature -p -STODO | 14:50 |
|
| at least that's what I would use | 14:50 |
|
lpapp
| git diff main branch | grep grep or git grep -r so? | 14:50 |
|
| git grep -l* | 14:50 |
|
osse
| can try git diff -STODO main branch | 14:50 |
|
jast
| though that splits it up by commit | 14:50 |
|
lpapp
| why main first? | 14:50 |
|
jast
| I don't think -S works with diff? | 14:50 |
|
| well, it's a range | 14:50 |
|
| a..b means the same as ~a b which is basically "everything in b but exclude a and all of its history" | 14:51 |
|
| or, intuitively (most of the time), "from a to b" | 14:51 |
|
osse
| jast: -S works with diff, yes | 14:51 |
|
lpapp
| sure, that is why it should be feature main | 14:51 |
|
| not main feature, right? | 14:51 |
|
jast
| then you would get TODOs that exist on main but not on feature | 14:51 |
|
lpapp
| oh, just reread the meaning of a b | 14:52 |
|
| I assumed it is a..b | 14:52 |
|
| but it seems to be b..a | 14:52 |
|
jast
| with 'git diff', 'a..b' and 'a b' is the same | 14:52 |
|
lpapp
| now, I am confused | 14:52 |
|
jast
| but in general '..' has a different more specific meaning | 14:52 |
| → jetchisel joined | 14:52 |
|
jast
| e.g. in 'git log' (which was my example) | 14:52 |
|
lpapp
| then why not main feature | 14:52 |
|
| if I want to see this in my feature, not main? | 14:53 |
|
jast
| yeah, that's what I would use, if I was using 'git diff' | 14:53 |
|
osse
| https://raw.githubusercontent.com/Osse/git-stuff/master/dots.txt | 14:53 |
|
lpapp
| git diff -STODO foo main seems to output a lot of flood | 14:53 |
|
| can I squeeze this? | 14:53 |
|
| e.g. just to get file and line numbers to the TODOs, so that I can jump to them | 14:54 |
|
jast
| tricky :) | 14:54 |
| → thiago joined | 14:55 |
|
lpapp
| I guess I could | grep | 14:55 |
|
| anyway, it does not work | 14:55 |
|
| it does not show only the TODOs from my branch | 14:55 |
|
osse
| In that case I would git grep -n ... in feature, and subtract the result from main | 14:55 |
|
lpapp
| the git diff version | 14:55 |
| → junktext joined | 14:56 |
|
lpapp
| how would you substract the result from main? | 14:56 |
|
osse
| something like: comm -23 <(git grep TODO feature) <(git grep TODO main) | 14:57 |
|
lpapp
| git log main..feature -p -STODO | grep TODO - workecd | 14:57 |
| ← skapata left | 14:57 |
|
lpapp
| thanks jast | 14:57 |
|
| osse thanks for the idea, maybe the git log command is simpler for a layman :) | 14:58 |
|
jast
| that will not give you line numbers unfortunately | 14:58 |
|
osse
| no line numbers there though | 14:58 |
|
jast
| and it will break down if things moved to different files | 14:58 |
|
osse
| me gusta vim -q <(git grep -n ...) | 14:58 |
|
lpapp
| actually, I was wrong, it did not work. | 14:58 |
|
| no line number is fine | 14:59 |
|
| so long as there is content | 14:59 |
|
| but it does not give me the right content anyway | 14:59 |
|
| so, something is not right | 14:59 |
|
| it gives some content, but having had a closer look, it is not correct | 14:59 |
|
osse
| it will also show removals, for example | 14:59 |
|
| the only actually technically correct solution I can think of is to find all todos in both branches and subtract one from the other | 15:00 |
|
jast
| seems error-prone | 15:00 |
| ← roadie left | 15:04 |
| ← bin101 left | 15:05 |
| ← morrigan left | 15:07 |
| → DoofusCanadensis joined | 15:07 |
|
osse
| git log -p main..feature | grep '^+.*TODO' I gues | 15:08 |
|
| s | 15:08 |
|
| jast: only if you're not a perfect human being | 15:10 |
|
jast
| :( | 15:11 |
| → bin101 joined | 15:20 |
| → roxlu joined | 15:21 |
| ← Samian left | 15:21 |
| → cvmn joined | 15:22 |
|
roxlu
| Hi! When I use `git apply mychanges.diff` once it works fine, but when I try to apply the same command again I get an error `patch does not apply` which makes sense. But I'm applying this patch with a cmake script which fails because of this and I was wondering if git has a feature to fail silently? .. or maybe there is a better solution? | 15:23 |
|
bookworm
| your shell does | 15:23 |
|
| || true | 15:23 |
|
osse
| roxlu: i've used the following trick in the past: Do a reverse patch dry run. If that succeeds you know the patch has already been applied | 15:24 |
|
bookworm
| but why are you trying to add a patch that already exists? | 15:24 |
|
osse
| roxlu: git apply --check --reverse | 15:25 |
|
roxlu
| bookworm: it looks like cmake tries to apply the patch every time I build my project | 15:25 |
|
bookworm
| yes, but why | 15:25 |
|
roxlu
| osse: ah thanks! how would you combine that with cmake? | 15:25 |
|
| bookworm: good question :) I'm not sure if this is normal cmake behavior or not tbh | 15:25 |
|
osse
| roxlu: basically the same as what you're doing now | 15:26 |
|
bookworm
| cmake just does what you tell it to | 15:26 |
| ← mike18 left | 15:26 |
|
roxlu
| bookworm: you can say that about every command in general | 15:26 |
|
osse
| roxlu: usually you can specify more than one COMMAND (or PATCH_COMMAND or whatever) and if one succeeds it will also do the next | 15:26 |
|
jast
| if it's a patch to the sources, that makes sense... cmake isn't really designed to alter source files | 15:26 |
|
roxlu
| bookworm: I'm also telling it to use a git repository and cmake is not cloning it upon every run neither | 15:26 |
|
osse
| roxlu: concider using FetchContent instead of ExternalProject. It runs at "cmake time", not "build time", and is supposed to be easier to use | 15:27 |
|
roxlu
| osse: so you add something like: `PATCH_COMMAND git --apply --check --revers mychanges.diff && git apply mychanges.diff` ? | 15:27 |
|
osse
| it will fix the whole issue, I think | 15:27 |
|
jast
| ||, not && | 15:28 |
|
roxlu
| jast: ah thanks | 15:28 |
|
jast
| OTOH you could just do: PATCH_COMMAND git apply ... || true | 15:28 |
|
roxlu
| osse: fetchcontent only works for other cmake projects if I'm correct | 15:28 |
|
osse
| roxlu: says "via any method supported by the ExternalProject module" in the docs | 15:28 |
|
| but I admit I haven't tried it myself | 15:28 |
| ← Strom left | 15:29 |
|
roxlu
| ok thanks! | 15:29 |
| ← lgc left | 15:30 |
| → roadie joined | 15:30 |
|
roxlu
| Using || true did the trick for now :) ... maybe not the best solution, but I think the correct solution lies outside cmake in this case (e.g. the library should be fixed) | 15:30 |
|
osse
| submit the patch upstream :P | 15:30 |
| → Strom joined | 15:31 |
|
osse
| barring any "hurr durr but IP and licensing and stuff" problems | 15:31 |
|
roxlu
| yeah hmm there is a bit more to it than I'm sharing :) | 15:31 |
|
| i'm using a minus .1 version of a library as ffmpeg only works with this version. I could udpate ffmepg too but where do you stop ^.^ | 15:32 |
| ← cvmn left | 15:32 |
|
osse
| we-have-to-go-deeper-meme.jpg | 15:32 |
|
| wait... || true ? | 15:33 |
|
| git apply --check --reverse mychanges.diff || git apply mychanges.diff | 15:33 |
|
| otherwise it won't apply the patch the first time! | 15:33 |
| ← jaggz left | 15:34 |
| → madewokherd joined | 15:34 |
|
osse
| also, on some systems it might not generate an actual script to run the commands so shell syntax can be a bit icky | 15:35 |
| → srinidhi joined | 15:36 |
| ← bin101 left | 15:36 |
|
roxlu
| ah thanks! | 15:39 |
| → bin101 joined | 15:39 |
| → tuskkk____ joined | 15:46 |
|
osse
| to solve the shell problem you can do FOO_COMMAND cmd1 COMMAND cmd2 (which will run one after the other) but then you need a way to negate the result of the first, and I haven't found a good way except using shell syntax, so... | 15:46 |
|
jast
| osse: git apply mychanges.diff || true | 15:48 |
| → Sasazuka joined | 15:49 |
| ← varaindemian left | 15:49 |
|
osse
| that still assumes shell | 15:51 |
| ← strk left | 15:54 |
|
osse
| Now I'm just making the whole ordeal more difficult for myself. In most cases it will be run as a shell script. | 15:54 |
| ← roadie left | 15:56 |
| ← adlternative left | 15:57 |
| → jhulten joined | 15:59 |
| → morrigan joined | 16:03 |
| → Samian joined | 16:11 |
|
lpapp
| osse: what did you mean by git log -p main..feature | grep '^+.*TODO'? | 16:13 |
|
osse
| lpapp: I mean that as an improvement over the previous version of using git log for this task | 16:20 |
|
lpapp
| yeah, I get that you wanted to see additions, only. | 16:20 |
|
| but that was not a solution in the first place from what I can see? | 16:20 |
|
| it is not giving me the TODOs introduced in my branch? | 16:20 |
|
| does it for you? | 16:20 |
|
osse
| I haven't got an applicable repo to test in at the moment | 16:21 |
|
| The reason I wrote it so late is simply that I didn't think of it before then | 16:21 |
| ← Murr left | 16:22 |
| → Murr joined | 16:22 |
|
lpapp
| ah, ok, well, I am still looking for a solution :) | 16:22 |
|
osse
| Is that a way of saying it didn't work? | 16:23 |
|
lpapp
| yes | 16:23 |
|
| I still do not get this main..feature thing | 16:23 |
|
| is it not source..destination? | 16:23 |
|
osse
| more like from..to | 16:23 |
|
imMute
| "show me all the commits in feature that are not also present in main" | 16:23 |
| ← jhulten left | 16:23 |
|
osse
| lpapp: what does it print, then? | 16:23 |
|
imMute
| where "in" means "reachable from" if you want to get into the details | 16:23 |
| → jhulten joined | 16:25 |
| → nobody_ joined | 16:25 |
|
lpapp
| osse: why git log, not git diff? | 16:25 |
| ← jhulten left | 16:26 |
|
osse
| lpapp: now that you mention it, no particular reason. cargo culted from jast's suggestion | 16:26 |
|
lpapp
| git diff is less noisy | 16:26 |
|
osse
| indeed | 16:27 |
| → orbyt joined | 16:28 |
|
osse
| I tested a bit. both the 'git diff ...' and 'git log -p ...' solutions seem to do what's desired piping it to | grep '^+.*TODO' | 16:28 |
|
lpapp
| osse: yes, I was wrong. I am really sorry. | 16:29 |
|
osse
| no problemo | 16:30 |
|
| the dude abides | 16:30 |
|
lpapp
| but if I am honest, it is not correct for me, still | 16:30 |
|
| it gives some TODOs not introduced in the branch | 16:30 |
|
| how is this possible? | 16:30 |
|
osse
| the git diff solution? | 16:30 |
|
lpapp
| I am getting a TODO in a line | 16:30 |
|
| which git blame says 2014-1020 | 16:31 |
|
| both git diff and git log | 16:31 |
| → jhulten joined | 16:31 |
|
osse
| that's possible if a TODO is removed in main that remains in feature | 16:31 |
|
| that will appear as an addition when you diff main against feature | 16:31 |
|
lpapp
| how to get that out of the way? | 16:31 |
| → roadie joined | 16:32 |
|
osse
| if it also appears in the git log solution then I don't know. I expected git log to not show it | 16:32 |
|
lpapp
| oh, yes, true man | 16:32 |
|
| actually, git log shows some TODOs | 16:33 |
|
| which git diff does not | 16:33 |
|
| so, that is not perfect either | 16:33 |
|
| it seems to show intermittent ones | 16:33 |
|
| that were added in the branch and then removed | 16:34 |
|
osse
| try this: git diff main...feature | 16:34 |
|
lpapp
| maybe, I need to create the intersection of the git diff and log solutions? | 16:34 |
| ← darkbit left | 16:34 |
|
osse
| THREE dots, oh lawd | 16:34 |
|
lpapp
| that works! :) | 16:34 |
| ← jhulten left | 16:35 |
|
ikke
| two dots with diff is redundant | 16:36 |
|
osse
| aaaand now I got Mr. Bungle in my head. Thanks, ikke. | 16:36 |
|
lpapp
| thanks, osse. | 16:37 |
|
osse
| Off the top of my head I can't think a weird edge case where this would give a different result from comparing the actual results of grepping TODO in both branches | 16:39 |
|
Timvde
| I *always* forget the difference between two and three dots :( | 16:39 |
|
osse
| But at this point my comm -23 <(blablabla) solution is starting to look not so complicated after all :P | 16:39 |
|
| Timvde: print this one out and keep it under your pillow: https://raw.githubusercontent.com/Osse/git-stuff/master/dots.txt | 16:40 |
|
| after ten-ish years you should be good to go | 16:40 |
|
ikke
| Learning by osmosis, nice | 16:41 |
|
Timvde
| osse: I just always look it up and then forget 5 minutes later (or I just try until I get what I'm looking for) | 16:41 |
|
lpapp
| osse: how is comm -23<... not more complicated than ...? | 16:41 |
|
CarloWood
| So, upstream merged everything - and now I'd like to test his 'main' branch, but without deleting my own main branch ... Hmm. I suppose I could just rename my own branch first and then do the same thing as before for the 'fix' branch. | 16:42 |
| ← Lunatrius left | 16:42 |
| ← Samian left | 16:42 |
|
Timvde
| osse: the thing that always confuses me is that the logic seems to be reversed for diff vs the rest | 16:42 |
|
osse
| lpapp: the command line is more complicted, but what it represents is simpler. Subjective, I guess | 16:42 |
|
lpapp
| fair enough | 16:43 |
|
Timvde
| So if anyone can explain how that's not the case, maybe I can remember :P | 16:43 |
|
osse
| But I'm probably biased. It was the first solution I could think of, and has given the correct answer all this time we tweaked the other ones :p | 16:43 |
|
| Timvde: diff compares to states. .. means a range. ranges don't make sense for diff. QED | 16:44 |
|
| *two states | 16:44 |
|
CarloWood
| Oh, I have a question that has been bothering me: A while ago I added 'branch = whateverbranch' to all [submodule "..."] blocks in .gitmodule. It seems that 'branch=' wasn't used (it only contained path= and url=). I use this branch in my scripts to make sure that that branch of the submodule will be checkedout. | 16:44 |
|
osse
| Timvde: I wouldn't say it's reversed. It's just different | 16:44 |
|
CarloWood
| But this upstream ALSO had a 'branch=' in his .gitmodules :/, which gave me problems. So, question: is 'branch=' used by git somehow? | 16:45 |
|
| .gitmodules* | 16:46 |
| → Acki joined | 16:46 |
|
Timvde
| osse: .. for log etc is the range from the base to the tip of the branch, while ... represents the entire range from tip to tip. For diff ... shows the diff starting from the merge base, while .. shows the diff between the tips | 16:46 |
| → Lunatrius joined | 16:46 |
|
osse
| I see your point | 16:47 |
|
Acki
| I use `* text=auto` in gitattributes, however what does it mean for my line endings? What line ending will end up in the central reposity? | 16:47 |
|
imMute
| Acki: depends on core.autocrlf settings | 16:47 |
|
osse
| IF I were king I would have made .. do what ... does now, treat ... as a syntax error and left it at that. | 16:47 |
|
Acki
| imMute: but this is a user setting, right? | 16:49 |
|
| how can I make sure that in the central repo is only LF used, while user on windows can checkout with CRLF? | 16:49 |
|
imMute
| I don't think that's possible without setting core.autocrlf on each clone | 16:49 |
|
osse
| * text=auto in .gitattributes is the best you get | 16:50 |
|
| that ensures LF in the the repo itself. | 16:51 |
|
Acki
| osse: I think this enforces that the same line ending is used for all files, it is not enforcing LF | 16:54 |
| → jhulten joined | 16:54 |
|
ikke
| It enables line-ending normalization | 16:54 |
|
osse
| https://git-scm.com/docs/gitattributes#Documentation/gitattributes.txt-Settostringvalueauto | 16:54 |
|
ikke
| meaning that it makes sure that LF is stored in the index/repository, and that it will checkout files in the working tree in the native format | 16:55 |
|
Acki
| so no mix of line endings in one file, correct? | 16:56 |
|
ikke
| It does not prevent editors making a mess of the files | 16:57 |
|
Acki
| ah okay, so internally it stores them as LF | 16:57 |
| ← Acki left | 17:02 |
|
CarloWood
| Is there a way to merge such that if one branch add something to a line (aka 'void setTime(double)' --> inline void setTime(double') and the other branch added that PLUS something else, in a single commit ('void setTime(double)' --> '[[always_inline]] inline void setTime(double)') that git then will think: they agree on adding 'inline' and then one adds '[[always_inline]]' so I'll keep that. | 17:02 |
|
| Not sure how to formulate that... | 17:02 |
| ← lpapp left | 17:02 |
|
CarloWood
| multiple changes on a single line merging thus. In principle not that much different from when they appear on different lines no? Aka, I have line1 and line2, and I merge with a branch that has line1 and line3, it will just add line3. | 17:03 |
|
| I think I even wrote the algorithm for that once... | 17:05 |
|
imMute
| CarloWood: I don't think you can make that automatic. git works with lines and the line was changed in both branches, therefore _conflict_ | 17:05 |
|
CarloWood
| Hmm, I once wrote something to merge changelogs where author names could be added to the same line by different "branches"... | 17:07 |
|
| I think it could be applied to git to merge single lines that were changed by both. | 17:08 |
|
| I can't find it back though :/ | 17:08 |
|
jast
| you could do this in a custom merge driver most likely | 17:11 |
|
| but there's no built-in magic for this | 17:11 |
|
CarloWood
| Ah, here it is: https://github.com/AlericInglewood/contribmerge/blob/master/src/three_way_merge.h | 17:12 |
|
| where contribmerge is the whole application | 17:12 |
|
jast
| see man gitattributes -> "Defining a custom merge driver" | 17:12 |
|
gitinfo
| the gitattributes manpage is available at https://gitirc.eu/gitattributes.html | 17:12 |
|
jast
| so you have to define it in .git/config or ~/.gitconfig and then apply it to a file pattern using .gitattributes | 17:12 |
| ← nobody_ left | 17:12 |
| ← rfuentess left | 17:15 |
| ← EvilDMP left | 17:17 |
| ← kapil left | 17:26 |
| → kapil joined | 17:26 |
| → tsdh joined | 17:27 |
| → stkrdknmibalz joined | 17:28 |
| → odoood joined | 17:30 |
| → masber joined | 17:36 |
| → Samian joined | 17:40 |
| ← reprazent left | 17:41 |
| → travisghansen joined | 17:42 |
| → reprazent joined | 17:42 |
|
NightMonkey
| Howdy. My team is having a problem with 'ghost commits' comming back when we commit feature branches to long-standing branches with GitHub PRs. I feel (don't know) that someone did a rebase on a public branch when they shouldn't have. Is there a way to find out when/where rebases are in the git history (vs. merges)? | 17:47 |
|
davve
| you can see it with git reflog | 17:47 |
|
| but that is only for your local repository | 17:48 |
|
NightMonkey
| I have a feeling it is a misconfigured IDE at the root of this, but until I can validate that... | 17:48 |
|
jast
| not in a central place unfortunately | 17:48 |
|
| you can really only see it on the machine of the person who did it | 17:48 |
|
davve
| ^ | 17:48 |
|
jast
| github PRs keep a note of force pushes made to the underlying branch, too | 17:48 |
|
NightMonkey
| davve: jast: Ah. Thanks. If I have access to local repositorys, what would I look for in the reflog? | 17:48 |
|
jast
| but if someone rebased the main branch outside of a PR, you're *probably* out of luck | 17:49 |
|
NightMonkey
| Ugh, *repositories | 17:49 |
|
| jast: OK, thanks. | 17:49 |
|
jast
| search it for entries that say 'rebase' and hope you understand what's going on :) | 17:49 |
|
davve
| you can see when the rebases are done | 17:49 |
|
NightMonkey
| jast: Ah, it's just listed like that? Great! | 17:49 |
|
jast
| yeah. preferably don't look in the reflog for HEAD first because it tends to be a big mess | 17:50 |
| → EvilDMP joined | 17:51 |
|
NightMonkey
| One other question: Is there a 'pattern' (anti- or otherwise) that could result in 'ghost commits' coming back into PRs? Where previous changes seem to be 'replayed'? | 17:51 |
|
| I *see* that the changes are in the destination branch, but the PR flow seems to think that the change is needed *again*. | 17:52 |
|
jast
| basically whenever one person updates a branch by rebasing, and another updates the branch by merging (having the old version of the branch locally) | 17:52 |
|
| or similarly, if someone cherry-picked the commits from the feature branch to the target branch, they're technically different commits | 17:52 |
|
NightMonkey
| jast: Thank you. It's good to not feel quite as crazy as when I started seeing this, because of your help. :) | 17:53 |
|
jast
| general best practice: rebase feature branches to keep them up-to-date (unless they're super-active with multiple developers, in which case you may have to come up with your own workflow that minimizes pain), use merge (real merge, not squash) to integrate feature branches into long-lived branches | 17:54 |
|
| the rebase is mostly for keeping things clean and making the feature branches easy to follow/understand later on | 17:54 |
|
| the merges serve as markers in history when (and by who) the feature branch got merged | 17:54 |
| ← tuskkk____ left | 17:55 |
|
jast
| similarly, forward-merging changes on an oldstable branch to a stable branch is best done with a merge so you can later see how the work made its way through the branches | 17:55 |
|
| for tiny feature branches, or really messy feature branches, a squash merge may be better than a real merge | 17:56 |
|
NightMonkey
| jast: Thank you! | 17:57 |
|
jast
| but the two guiding principles are always: how likely is it that I will understand the history later? how likely are we to mess this up? | 17:57 |
| → cyrus_mc joined | 17:58 |
|
NightMonkey
| jast: We have been using GitHub PR's "Squash and merge" (but not rebase) for merging from topic/feature branches to long-lived branches like "dev" and "main". | 18:01 |
| ← austin987 left | 18:02 |
|
jast
| yeah, it's not a terrible practice, but a big PR tends to be easier to understand afterwards if you keep the individual commits (if the individual commits make sense, i.e. they're not a huge sequence of "fix this" "try another approach" "fix some more tests" "undo this first change" etc. | 18:03 |
| → Thanatermesis joined | 18:03 |
| → Betal joined | 18:04 |
| ← Thanatermesis left | 18:05 |
| ← reprazent left | 18:10 |
| → ash_worksi joined | 18:10 |
| → nasamuffin joined | 18:10 |
| → reprazent joined | 18:11 |
| → dscho joined | 18:11 |
|
Gurkenglas
| Is there a way to make it so that particular commits don't show on a git blame? | 18:12 |
|
| nevermind, should have googled that first | 18:13 |
|
ikke
| blame.ignoreRevsFile | 18:13 |
| → austin987 joined | 18:13 |
| ← masber left | 18:16 |
| → dunpeal joined | 18:17 |
| → asbachb joined | 18:18 |
| ← cyrus_mc left | 18:18 |
|
dunpeal
| Hello! I'd like to have a setup like this: two branches, a normal `master` and a special branch `published`, with the `published` branch containing a _subset_ of the files in the `master` head. Is that possible to do easily? | 18:19 |
|
asbachb
| Hi. I wonder if there's a possibility to launch a git-bash on windows with some kind of init script. I'm looking for an installation/user independent approach (so no /etc/profile, bash_profile, etc) | 18:20 |
|
ikke
| dunpeal: not trivialy | 18:20 |
| ← Murr left | 18:22 |
| → Murr joined | 18:22 |
| → Narrat joined | 18:28 |
| → rahl joined | 18:29 |
| → EvilDMP_ joined | 18:31 |
|
dscho
| asbachb Git Bash respects ~/.bash_profile IIRC | 18:33 |
|
asbachb
| dscho: But it's user specific | 18:33 |
| ← pulse left | 18:34 |
|
dscho
| You could try passing `-c <command> -i`, that _might_ work. | 18:34 |
|
asbachb
| dscho: Actually that closes the shell again | 18:34 |
| ← EvilDMP left | 18:35 |
|
asbachb
| I want to distribute a pack with vanilla git-bash + some additional env variable setup. But I want to keep the ability to replace that vanilla git installation from time to time without fiddeling files in and out. | 18:35 |
|
| So i don't have a problem with an external launcher | 18:36 |
| → clime joined | 18:38 |
| → jmcantrell joined | 18:38 |
|
dscho
| asbachb you could always put stuff into `/etc/profile.d/` | 18:43 |
|
asbachb
| dscho. From my undestanding this is placed in git-bash installation. | 18:44 |
|
dscho
| You would create a file in there, yes. | 18:44 |
| ← AnAverageHuman left | 18:44 |
|
dscho
| Otherwise you would have to launch git-bash.exe with that `-c`/`-i` combination I mentioned earlier (if it works, which you need to test). | 18:45 |
|
dunpeal
| ikke: how would you do it? I'm thinking of doing a merge-squash of master into published, and just deleting private files from the merge commit. | 18:46 |
| ← TomyWork left | 18:48 |
| → randallb joined | 18:48 |
|
dunpeal
| And then just to keep resetting `published` into a new merge-squashed commit. | 18:49 |
| ← Gustavo6046 left | 18:49 |
| → Gustavo6046_ joined | 18:49 |
|
ikke
| yeah, it would involve something like that | 18:50 |
| ← reprazent left | 18:50 |
| → AnAverageHuman joined | 18:50 |
|
asbachb
| dunpeal: Maybe you should rethink what you want to accomblish and why it should be in your git repo | 18:50 |
|
| sounds at least strange to me | 18:50 |
| → reprazent joined | 18:51 |
| Gustavo6046_ → Gustavo6046 | 18:51 |
|
osse
| asbachb: if the end result you want is just environment variables then you can make a script and have 'exec bash' at the bottom of it. | 18:51 |
|
| this will re-read .bashrc, though. so might not fork for you if you want to modify the common vars because they might be overwritten | 18:52 |
|
asbachb
| osse: the important thing is it that I don't want to modify user/installation directory. | 18:56 |
|
| so .bash_* and/or /etc is not working for now. | 18:57 |
|
dunpeal
| asbachb: I'm trying to publish a subset of the files of a repo to be more broadly accessible. | 18:58 |
|
| So that subset goes to a public repo, while the main repo remains private. | 18:58 |
|
osse
| asbachb: I think my solution should work with that requirement | 19:00 |
|
asbachb
| dunpeal: So for me it sound like these are different repos. | 19:01 |
|
| osse: Just to clearify I want to to something like this: https://gist.github.com/asbachb/9c01f2f77bd16a5a22bbfb56dd67d608 | 19:02 |
|
| And make it available to a newly opened bash. | 19:02 |
| → durham_ joined | 19:02 |
| ← chexum left | 19:03 |
|
asbachb
| So ideally the user click on a shortcut to open that git-bash with that predefined stuff. | 19:03 |
| → chexum joined | 19:03 |
| ← durham left | 19:03 |
| ← Quietus left | 19:04 |
|
asbachb
| dunpeal: Is it for documentation purposes or should a thirdparty be able to interact with that public repo? | 19:07 |
|
dunpeal
| asbachb: purely documentation purposes. Effectively the `published` repo is read-only. | 19:09 |
| → Quietus joined | 19:09 |
|
asbachb
| dunpeal: Just my 2 cents: I'd suppose to keep these repos seperated. So you minimize the chance to expose private information by accident. And sync it somehow automated vi CI/CD. So you have a better control on what to publish and what not. | 19:11 |
|
osse
| asbachb: add 'exec bashg | 19:12 |
|
| asbachb: try this: add 'exec bash' at the bottom of the script. then make a shortcut to git-bash.exe with Target: "C:\Program Files\Git\git-bash.exe" --cd-to-home C:\your\scripthere | 19:13 |
| → arkho joined | 19:13 |
| → john_johnk joined | 19:14 |
|
arkho
| I am trying to set up unauthenticated Git server-based access to a repo. I have placed a 'git-daemon-export-ok' file in the repo on the remote server, but I am still told that either I'm denied access or the repo is not exported. Is there another step? | 19:15 |
| ← chexum left | 19:18 |
| → chexum joined | 19:18 |
|
asbachb
| osse: Ah cool. That works! | 19:19 |
|
osse
| asbachb: nice | 19:19 |
|
| asbachb: there is a small caveat. If the user's .bashrc or other sourced file sets a brand new value for PATH (as opposed to adding something to it like you do) then you'll find that it won't work | 19:20 |
|
| But I can't remember ever seeing that in real life. IF the user modifies PATH at all it's most usually similar to what you do, in which case you'll have no problems | 19:20 |
|
asbachb
| But some script is messing with my JAVA_HOME ^^ f* | 19:21 |
| → Thanatermesis joined | 19:23 |
| ← Thanatermesis left | 19:23 |
|
asbachb
| Mh strange. The path gets changed to "../java-path" | 19:24 |
| → sniperwolf joined | 19:28 |
| → pulse joined | 19:28 |
| → Thanatermesis joined | 19:30 |
|
asbachb
| osse: thanks. works as wanted :) | 19:30 |
| ← shlomif left | 19:30 |
|
asbachb
| dscho: Thank you as well. | 19:30 |
| → oncall-pokemon joined | 19:31 |
| ← Thanatermesis left | 19:31 |
| → Thanatermesis joined | 19:31 |
|
oncall-pokemon
| .voice | 19:32 |
|
gitinfo
| oncall-pokemon: What? You're not even in #git! | 19:32 |
| ← Thanatermesis left | 19:32 |
| → Thanatermesis joined | 19:33 |
|
ikke
| qlol | 19:33 |
|
| jast: ^ | 19:33 |
|
| oncall-pokemon: fyi, you do not need voice here | 19:34 |
|
oncall-pokemon
| Oh thanks, the doc said I did. That's why I did. sorry | 19:35 |
|
| I had a quiestion. When you do a `git pull` on a feature branch and get an error like so https://pastebin.com/vgWyuGZF. Why does that happen? Especially if you can do `git push` no problem? | 19:35 |
| ← reprazent left | 19:39 |
| → reprazent joined | 19:40 |
|
imMute
| oncall-pokemon: "git push" (with no other arguments) would give the same error | 19:40 |
|
oncall-pokemon
| oh would it. so I need to do `git pull origin HEAD` then I guess? | 19:41 |
|
imMute
| any reason you can't setup the remote tracking branch first? | 19:42 |
|
| and no, you'd want the name of your branch instead of "HEAD" | 19:42 |
|
oncall-pokemon
| I though HEAD just referred to the current one. I could setup a remote tracking branch, oddly i've been using git for years and have no idea what that is | 19:44 |
| → humanface joined | 19:46 |
| ← Gustavo6046 left | 19:47 |
| → plasma41 joined | 19:47 |
| → Gustavo6046 joined | 19:47 |
|
asbachb
| I'd say it links a local branch to a remote one. I think it starts to make sense when you understand that a local and remote repository are more or less different entities. | 19:49 |
|
oncall-pokemon
| It's kinda odd that it just doesn't assume that branches with the same name are the same | 19:54 |
| ← Xenguy left | 19:55 |
|
asbachb
| oncall-pokemon: actually you can have multiple remote locations | 19:57 |
|
oncall-pokemon
| yeah that makes sense. is there a way to automatically configure this when one creates a new branch and not need to do that extra command? | 19:58 |
| ← reprazent left | 19:58 |
| ← natrys left | 19:58 |
| ← john_johnk left | 20:00 |
| → reprazent joined | 20:02 |
|
plasma41
| I have have set the environment variables GIT_COMMITTER_NAME="Foo" and GIT_COMMITTER_EMAIL="bar@baz", but when I run `git commit -a -m "commit message"`, I still get the "Please tell me who you are." message. Shouldn't this work? Am I missing something? I'm using git v2.20.1 | 20:03 |
|
asbachb
| oncall-pokemon: I don't know if you can track a remote branch if it's not yet there. | 20:04 |
|
plasma41
| s/have have/have/ | 20:04 |
| ← dscho left | 20:05 |
|
asbachb
| plasma41: Maybe you need to set an author as well? | 20:05 |
|
| GIT_AUTHOR_{NAME|EMAIL} | 20:06 |
|
osse
| yeah, author != committer | 20:06 |
|
oncall-pokemon
| thanks | 20:06 |
|
osse
| actually if you set those you don't have to set the COMMITTER ones | 20:06 |
|
asbachb
| oncall-pokemon: Maybe create an alias for creating a local branch and push -u it to your remote repo. | 20:09 |
|
plasma41
| Ok, so if I remove the GIT_COMMITTER_{NAME|EMAIL} environment variables and set GIT_AUTHOR_{NAME|EMAIL} environment variables, the commit should succeed and I shouldn't get the "Please tell me who you are" error? | 20:09 |
| → oriba joined | 20:10 |
| → Xenguy joined | 20:13 |
|
osse
| yes | 20:13 |
| → rahl- joined | 20:14 |
|
plasma41
| I replaced the GIT_COMMITTER_{NAME|EMAIL} environment variables with GIT_AUTHOR_{NAME|EMAIL} environment variables and retried the commit using `git commit -a -m "commit message"`, but still got the same error. | 20:15 |
|
osse
| plasma41: how do you set them= | 20:16 |
| → tirnanog joined | 20:16 |
|
plasma41
| osse: From a bash prompt $: export GIT_AUTHOR_NAME="Foo" | 20:16 |
|
| export GIT_AUTHOR_EMAIL="bar@baz" | 20:17 |
| ← rahl left | 20:17 |
| ← reprazent left | 20:18 |
|
asbachb
| plasma41: Can you do normal commits (so no amendments) | 20:18 |
|
osse
| plasma41: huh... it seems like when you use the env var way you actually have to set all four | 20:18 |
|
plasma41
| Ah, ok it turns out I needed all four environment variables GIT_{AUTHOR|COMMITTER}_{NAME|EMAIL} | 20:19 |
|
osse
| yeah that's a bit strange | 20:19 |
|
plasma41
| asbachb: I'll try it. | 20:20 |
| → reprazent joined | 20:20 |
| → vysn joined | 20:21 |
| → Minall joined | 20:22 |
|
Minall
| Hello git community! | 20:22 |
|
| I have a git branch I was working that was a branch of develop, in my project | 20:22 |
| → furrymcgee joined | 20:23 |
| ← furrymcgee left | 20:23 |
|
Minall
| The problem is that, I worked a lot in develop and now my branch is somewhat behing | 20:23 |
|
| s/behing/behind, so, I have to now work again with my first branch, yet it is not updated to the latest commits | 20:23 |
|
| How should I fix this, and work with my original branch made from develop? | 20:24 |
|
plasma41
| asbachb: Ok, I created another file and added it to the staging area with `git add filename`. I then tried `git commit -m "commit message" with just GIT_COMMITTER_{NAME|EMAIL} vars (errored), with just GIT_AUTHOR_{NAME|EMAIL} vars (errored), and finally with both (succeeded). | 20:27 |
| ← roadie left | 20:30 |
| → durham joined | 20:32 |
| ← Samian left | 20:33 |
| ← durham left | 20:33 |
| → durham joined | 20:34 |
| ← durham_ left | 20:34 |
| → durham__ joined | 20:34 |
| → Samian joined | 20:35 |
| ← durham left | 20:38 |
| → absc joined | 20:44 |
| ← dmc left | 20:47 |
| → dmc joined | 20:50 |
| ← sniperwolf left | 20:51 |
|
oriba
| after a git stash pop I got a merge conflict, I dif git reset, because I thought this will go back before the stash. Some other things done, my file has now been removed by git. how to go back to the state before the stash pop? | 20:54 |
| → roadie joined | 20:56 |
| ← tsdh left | 20:59 |
|
oriba
| I hope, reflog will be my friend here (if there is no easier way) | 20:59 |
| ← BenjiProd left | 21:00 |
| ← Narrat left | 21:05 |
| → schmillin joined | 21:05 |
| → Acki joined | 21:06 |
| → tsdh joined | 21:06 |
|
Acki
| I set `* text=auto` in my gitattributes, however, my current files are still in CRLF under linux after I did: `git add --renormalize .` | 21:08 |
| ← madewokherd left | 21:09 |
| ← absc left | 21:09 |
| ← Kamilion left | 21:11 |
| ← odoood left | 21:14 |
| ← roadie left | 21:18 |
|
ikke
| dos2unix | 21:19 |
|
plasma41
| osse asbachb: I don't understand. I'm trying to run this script https://sources.debian.org/src/gitpkg/0.29+nmu1/git-debimport/ from a bash shell where I've exported all of the GIT_{AUTHOR|COMMITTER}_{NAME|EMAIL} variable, yet when the script tries to run the command spanning lines 425-426, I get the "Please tell me who you are" message. | 21:24 |
|
| I even verified the environment variables are present with a invocation of `env` inserted between lines 424 and 425. | 21:24 |
| → bkay joined | 21:27 |
| ← beshr left | 21:28 |
| ← jetchisel left | 21:28 |
|
Acki
| ikke: so this `--renormalize` does nothing as I see | 21:32 |
|
| it will leave the line endings untouched | 21:32 |
| ← plitter left | 21:32 |
| ← orbyt left | 21:32 |
|
plasma41
| And yet when I try running that same failing command interactively on a test repo instead of as part of a script it works as expected | 21:32 |
|
ikke
| Acki: it's to normalize the index, not the working tree | 21:33 |
|
| It's an option for git add afterall, not git checkout | 21:33 |
|
Acki
| how can I normalize the working tree? | 21:33 |
| → Guest35 joined | 21:34 |
|
Acki
| ikke: ? | 21:34 |
|
ikke
| dos2unix can do it | 21:35 |
| → disi joined | 21:35 |
| ← Thanatermesis left | 21:38 |
|
Acki
| and when I remove everything expect the git`folder and do a `git checkout .` again? | 21:39 |
| → madewokherd joined | 21:42 |
| → polyzen joined | 21:43 |
| ← dmc left | 21:44 |
| polyzen → dmc | 21:44 |
|
plasma41
| Am I off base for thinking what works in an interactive shell should work in a script? | 21:45 |
|
geirha
| no, it should work equally well in either case | 21:46 |
|
Acki
| ikke: so when I do it like this I will get also the files in correct line ending | 21:47 |
|
| however, I guess the disadvantage is, that other repositories will not get the new line endings when they not do the same right? | 21:48 |
|
plasma41
| geirha: Any idea why it's not working then? | 21:48 |
| → orbyt joined | 21:49 |
|
geirha
| No, not without being able to reproduce it. And I'm sure you've double checked that it's not a typo like COMITTER instead of COMMITER? | 21:53 |
|
| err, instead of COMMITTER | 21:53 |
|
| declare -p "${!GIT_AUTHOR_@}" "${!GIT_COMMITTER_@}" | 21:54 |
| → gast0n joined | 21:55 |
|
| plasma41 sheepishly realizes that actually he did accidentally type COMMITER | 21:55 |
|
plasma41
| geirha: Yup, turns out it was nothing but bad spelling. Thanks for prompting me to check that. | 21:59 |
| ← Minall left | 21:59 |
|
dunpeal
| Is there a good way to cherrypick a single file (or a directory) from one commit to another? | 21:59 |
|
| Or am I stuck with `git checkout <other commit> -- paths` and then `git add; git commit`? | 21:59 |
|
jast
| ikke: the bot syncs info about channels (including membership), I'm guessing the sync got lost or delayed | 22:00 |
|
| but since I've never tried it, let's make sure it's not a general issue | 22:00 |
|
| .voice | 22:00 |
|
gitinfo
| jast: What? You're not even in #git! | 22:00 |
|
jast
| okay, state tracking is broken for sure | 22:01 |
|
| I'll have to look into that | 22:01 |
| ← plasma41 left | 22:04 |
| → epolanski joined | 22:06 |
| ← oncall-pokemon left | 22:10 |
| → yuckey2d5 joined | 22:10 |
| ← yuckey2d left | 22:12 |
| yuckey2d5 → yuckey2d | 22:12 |
| → zebrag joined | 22:14 |
| → skapata joined | 22:17 |
| ← skapata left | 22:17 |
| → skapata joined | 22:17 |
| ← yuckey2d left | 22:19 |
| ← otisolsen70 left | 22:20 |
| ← Kamui left | 22:25 |
| ← durham__ left | 22:25 |
| ← DoofusCanadensis left | 22:33 |
| ← gh34 left | 22:39 |
| ← junktext left | 22:39 |
| → va5c0 joined | 22:39 |
| ← va5c0 left | 22:41 |
| ← palasso left | 22:43 |
| → va5c0 joined | 22:44 |
| ← clime left | 22:44 |
| → durham joined | 22:48 |
| ← humanface left | 22:48 |
| ← orbyt left | 22:49 |
| ← vysn left | 22:50 |
| ← Acki left | 22:54 |
| → junktext joined | 22:54 |
| ← durham left | 22:57 |
| → hbautista joined | 23:08 |
| ← theoceaniscool left | 23:09 |
| → roadie joined | 23:14 |
| ← junktext left | 23:14 |
| → jwillikers joined | 23:18 |
| ← roadie left | 23:19 |
| ← jwillikers left | 23:21 |
| ← Xenguy left | 23:31 |
| ← rahl- left | 23:31 |
| ← shailangsa left | 23:36 |
| ← va5c0 left | 23:43 |
| → igemnace joined | 23:44 |
| → Thanatermesis joined | 23:44 |
| ← Thanatermesis left | 23:45 |
| ← Wuzzy left | 23:45 |
| → Thanatermesis joined | 23:45 |
| ← Lunatrius left | 23:49 |
| ← EvilDMP_ left | 23:50 |
| → Lunatrius joined | 23:50 |
| → Shailangsa_ joined | 23:51 |
| → Codaraxis_ joined | 23:51 |
| ← oriba left | 23:52 |
| ← Codaraxis left | 23:55 |
| ← Rhys left | 23:58 |
| → Rhvs joined | 23:58 |
| ← gco left | 23:59 |