Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Best workflow for local dev & testing

    Development
    3
    4
    584
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • luckman212L
      luckman212 LAYER 8
      last edited by luckman212

      So I've had a look through Docs » pfSense » Development and was left wondering: what is the recommended git workflow?

      What I've been doing (I'm sure it's very wrong and inefficient!) is

      • clone my fork of pfSense and make a new branch for whatever patch I will work on
      • connect directly to my "lab" pfSense via SFTP
      • make my edits directly to the filesystem (!)
      • try to keep track of which files I have touched (!!)
      • test, scratch head, test more, bang head, etc.
      • once things are working, copy these files back to my local git repo
      • run git ls-files -m and then git commit -a and finally git push origin {foo}
      • submit PR if needed

      I am pretty sure this is nuts and am looking for a saner way. I am guessing the proper way is to work out of the files in my local repo/branch and git pull directly from there to pfSense? Or should I be branching/editing directly on github.com and pulling from there?

      I also browsed through /etc/phpshellsessions/gitsync and I think maybe I could copy that script, rename it luckman212-gitsync or something, edit $GIT_REPO, $DEFAULT_BRANCH and the $branches() array and use that...

      Looking for a little guidance on what the proper way is.

      1 Reply Last reply Reply Quote 0
      • jimpJ
        jimp Rebel Alliance Developer Netgate
        last edited by

        I am not sure about others but I use UltraEdit/uex and I open files directly on the firewall over scp/sftp. When done, I make local copies in the repo, check the diffs, and commit. Opening them over scp directly in the editor makes it fairly obvious which ones have changed.

        You could do git straight from the firewall or copy things back and forth but anything you do in that area could be error prone or inefficient. For example, you can't just copy back all of /usr/local/www/ into git locally because a package or other function may have placed a file there that doesn't belong in the main git repo. There are some packages I code where I scp whole directories back and forth when working, like acme, but they are the exception not the rule.

        You almost have to make live edits or else you'll be doing a ton of copying/syncing every time you make a little syntax change or error fix.

        Remember: Upvote with the 👍 button for any user/post you find to be helpful, informative, or deserving of recognition!

        Need help fast? Netgate Global Support!

        Do not Chat/PM for help!

        1 Reply Last reply Reply Quote 0
        • luckman212L
          luckman212 LAYER 8
          last edited by luckman212

          Thank you Jim. So I guess my workflow isn't that crazy after all. Sounds similar to yours. I'm on a Mac so I'm using Sublime Text + Mountain Duck for the sftp connection. Still would like to hear from anyone else on how they do development, anything to make it smoother, safer, etc.

          1 Reply Last reply Reply Quote 0
          • P
            PiBa
            last edited by

            I use TortoiseGIT (on Windows) to do my git stuff..
            And am using 'NetBeans' to make changes to my local copy of the repository. Upon saving a file it gets uploaded automatically to my pfSense test box. Other than that, its pretty similar. To your workflow..

            • Git-Sync the latest pfSense master repo to local filesystem.
            • Make edits / save / test
            • Commit changes to a new branch
            • Push branch to my github repo
            • Submit a PR

            The nice thing about NetBeans is that knows the complete 'project' and offers completion of function names and some basic validation of code and variables used..

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.