Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Possible drawbacks for having duplicate local sources of the project tracking the same Git remote

+5
−0

Context

I have started working on an Angular upgrade for a medium-sized project (from v. 10 to v. 15) and this is a rather long activity that is interrupted by other changes that need to be performed on the same project.

I have created another branch for the upgrade, but switching back to another branch takes a lot of time (npm install is very slow and the first npm start is the same) since branches use different node versions (I am switching these using nvm on Windows).

Possible mitigation

I am thinking of creating a local copy of the project, that tracks the same remote and work separately in the upgrade branch. Doing so requires being more careful (e.g. syncing changes done in the main branch).

Shortly put, I want to avoid making changes to the upgrade branch node_modules folder (as much as possible) until the upgrade is done.

Are there any other drawbacks to doing the local copy? Or is there any other solution to avoid wasting a lot of time switching back and forth from the upgrade branch?

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

What's wrong with branches? (3 comments)

2 answers

+7
−0

You want git worktree: https://git-scm.com/docs/git-worktree.

The idea is that you can have multiple branches of the same repository checked out to different directories, but they're still the "same" repository locally. I've used this technique precisely to avoid having to re-download node_modules when switching branches, among other related problems.

The main disadvantage to git worktree is that you cannot have the same branch checked out in multiple directories. That restriction is sensible, as it would be hard to sync the changes between the directories otherwise, but it's occasionally annoying. To work around this annoyance, I'll create a local branch like fake-branch that tracks main, develop, etc. (whatever the main branch is) and use fake-branch as the "resting" branch for my secondary directory. That way, if I accidentally switch to the main branch in my "normal" directory, I don't get an error.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

+4
−0

This is definitely an intended use case of Git.

You will need to make sure your .gitignore files don't include any artifacts of your build environment. GitHub has a canonical set of .gitignore files here.

Be sure that all completed work actually makes it to your remote. (Use git push rigorously.) Consider suffixing the names of your feature branches with the version number they apply to.

If you slip up on these, then you will see an error on git checkout claiming that your branch doesn't exist, or you will end up checking out old code. But these are just the situations that would happen to another developer collaborating with you on the same project: they're all recoverable, at worst by recreating your environment.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

0 comment threads

Sign up to answer this question »